GVKun编程网logo

将c:forEach变量传递给jsp:include(c语言传入变量地址)

9

本文将为您提供关于将c:forEach变量传递给jsp:include的详细介绍,我们还将为您解释c语言传入变量地址的相关知识,同时,我们还将为您提供关于、、三者之间的本质区别、c#–asp标签内的f

本文将为您提供关于将c:forEach变量传递给jsp:include的详细介绍,我们还将为您解释c语言传入变量地址的相关知识,同时,我们还将为您提供关于<%@page include%>、<%@include%>、 三者之间的本质区别、c# – asp标签内的foreach变量不存在、c# – 在onclientclick中将变量传递给javascript、C:foreEach的实用信息。

本文目录一览:

将c:forEach变量传递给jsp:include(c语言传入变量地址)

将c:forEach变量传递给jsp:include(c语言传入变量地址)

我试图访问在include中的JSTL for循环上设置的一些JSTL变量。

例:

<c:forEach items="${cart.entries}" var="entry"> <jsp:include page="helper.jsp"></jsp:include></c:forEach>

在helper.jsp内部,我希望能够引用变量’entry’。它不断上升为“空”。我认为也许可以像使用常规设置变量一样,将范围添加到forEach变量中。

有任何想法吗?

答案1

小编典典

答案:我最终只是要做到这一点就可以正常工作。

<c:forEach items="${cart.entries}" var="entry"><c:set var="entryFC" value="${entry}" scope="request"></c:set> <jsp:include page="helper.jsp"></jsp:include></c:forEach>

然后,我在include中引用了entryFC。根本不是很优雅,但是它的工作原理使我不满意。

<%@page include%>、<%@include%>、<jsp:include > 三者之间的本质区别

<%@page include%>、<%@include%>、 三者之间的本质区别

<%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别

先从它的几个内置对象说起。

application和session比较简单,这里主要说明request和page的作用范围。

application:全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。

session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。

request:请求作用域,就是客户端的一次请求。

page:一个JSP页面。

以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。举个简单的例子:

jsp1.jsp

<jsp:useBean id="beanID" class="xxx .xxx.BeanClass" scope="request" />

<jsp:include page="jsp2.jsp" />

jsp2.jsp

<jsp:getProperty name="beanID" property="sample" />

运行jsp1.jsp可以正常显示数据,因为作用范围是request,相当于调用了request.setAttribute()方法,

jsp2页通过request.getAttribute来获得这个bean.如果把request改为page,就会抛出NullPointerExceptioin.

一个请求可以跨好几个JSP(include和forword)和Servlet(如filter).不过这里有一个需要注意的就是区别

<jsp:include> 和<%@ include %>.如果上面的<jsp:include page="jsp2.jsp" />改为<%@ include file="jsp2.jsp" %>,即使scope为page也是正确的,<%@ include %>是编译时包含,<jsp:include>是运行时包含.前者就相当于宏,编译时替代,后者相当于函数,运行时返回.

<% @ page %> 只能包含静态内容。

c# – asp标签内的foreach变量不存在

c# – asp标签内的foreach变量不存在

并在第三行它得到错误:
编译器错误消息:CS0103:当前上下文中不存在名称“t”.

有人能帮助我吗?

解决方法

你不能在这样的循环中使用LinkBut​​ton,像按钮代码里面那样的nether变量.未找到的变量是LinkBut​​ton中的变量.

我建议使用repeater来创建你的循环,或者PlaceHolder并通过在后面的代码中的同一循环中添加控件来创建链接按钮.

这是一个例子

foreach (string s in new string[] { "ena","dyo" })
    {
        Literal lTitle = new Literal();
        lTitle.Text = "<Br>" + s;

        LinkButton lbButton = new LinkButton();
        lbButton.Text = "<br>" + s;

        phAddOnMe.Controls.Add(lTitle);
        phAddOnMe.Controls.Add(lbButton);
    }

并在页面上

<asp:PlaceHolder runat="server" ID="phAddOnMe"></asp:PlaceHolder>

c# – 在onclientclick中将变量传递给javascript

c# – 在onclientclick中将变量传递给javascript

好吧,我想我已经从stackoverflow尝试了3-4种方法,但似乎没有一种方法可行.

我有:

OnClientClick='<%# Eval("albumName","doConfirm(\"delete\",\"{0}\");").ToString() %>'

但在html中它呈现为:

onclick="doConfirm(&quot;delete&quot;,&quot;Test&quot;);"

还尝试了一个方法来调用:

public string CreateConfirmation(String action,String item) {
    return String.Format(@"return confirm('Sikker på du vil {0}: {1}');",action,item);
}

有了这个:

OnClientClick='<%# CreateConfirmation("delete",(string)Eval(albumName)) %>'

但是给我完全相同的问题….
所以我很丢失?

解决方法

我提前为这么长的答案道歉,但我想要彻底.

这显然是.Net 4.0(及更高版本)中的“安全”功能.您可以在以下位置了解更多信息:

> http://avinashsing.sunkur.com/2010/10/29/asp-net-html-encoding-attributes-in-server-controls/
> http://forums.asp.net/p/1554455/3818604.aspx
> Stop the tag builder escaping single quotes ASP.NET MVC 2

以上所有链接还建议声明公共类来覆盖行为:

public class HtmlAttributeNoEncoding : System.Web.Util.HttpEncoder
{
    protected override void HtmlAttributeEncode(string value,System.IO.TextWriter output)
    {
        output.Write(value);
    }
}

然后将其添加到< system.web> web.config中的元素:

<httpRuntime encoderType="HtmlAttributeNoEncoding"/>

这肯定解决了渲染问题,因此引号和撇号呈现为“和”(如预期的那样).

那就是说,我用以下方法测试了你的问题:

<script type="text/javascript">
    var doConfirm = function (action,item) {
        alert('Sikker på du vil ' + action + ': ' + item);
        return false;
    };
</script>

<p>Some "arbitrary" text. <asp:Button ID="Button3" runat="server" Text="Button" OnClientClick="doConfirm('delete','myalbum');" /></p>
<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick='<%# Eval("albumName",\"{0}\");").ToString() %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderText="Album Name" datafield="albumName" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="Button2" runat="server" Text="Button" OnClientClick='<%# CreateConfirmation("delete",(string)Eval("albumName")) %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

并在代码隐藏中:

public partial class _Default : System.Web.UI.Page
{
    public string CreateConfirmation(String action,String item)
    {
        return String.Format(@"return doConfirm('{0}','{1}');",item);
    }

    protected void Page_Load(object sender,EventArgs e)
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("albumName",typeof(string));
        DaTarow dr = null;

        dt.Columns.Add(dc);

        dr = dt.NewRow();
        dr["albumName"] = "Zen Arcade";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["albumName"] = "New Day Rising";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["albumName"] = "Candy Apple Grey";
        dt.Rows.Add(dr);

        GridView1.DataSource = dt;
        GridView1.DataBind();
    }

}

我能够复制你的渲染问题:

<p>Some "arbitrary" text.
    <input type="submit" onclick="doConfirm(&#39;delete&#39;,&#39;myalbum&#39;);" value="Button" name="ctl00$MainContent$Button3" id="MainContent_Button3" />
</p>
<div>
    <table cellspacing="0" rules="all" border="1" id="MainContent_GridView1">
        <tr>
            <th scope="col">&nbsp;</th>
            <th scope="col">Album Name</th>
            <th scope="col">&nbsp;</th>
            <th scope="col">albumName</th>
        </tr>
        <tr>
            <td>
                <input type="submit" onclick="doConfirm(&quot;delete&quot;,&quot;Zen Arcade&quot;);" value="Button" name="ctl00$MainContent$GridView1$ctl02$Button1" id="MainContent_GridView1_Button1_0" />
            </td>
            <td>Zen Arcade</td>
            <td>
                <input type="submit" onclick="return doConfirm(&#39;delete&#39;,&#39;Zen Arcade&#39;);" value="Button" name="ctl00$MainContent$GridView1$ctl02$Button2" id="MainContent_GridView1_Button2_0" />
            </td>
            <td>Zen Arcade</td>
        </tr>
        <tr>
            <td>
                <input type="submit" onclick="doConfirm(&quot;delete&quot;,&quot;New Day Rising&quot;);" value="Button" name="ctl00$MainContent$GridView1$ctl03$Button1" id="MainContent_GridView1_Button1_1" />
            </td>
            <td>New Day Rising</td>
            <td>
                <input type="submit" onclick="return doConfirm(&#39;delete&#39;,&#39;New Day Rising&#39;);" value="Button" name="ctl00$MainContent$GridView1$ctl03$Button2" id="MainContent_GridView1_Button2_1" />
            </td>
            <td>New Day Rising</td>
        </tr>
        <tr>
            <td>
                <input type="submit" onclick="doConfirm(&quot;delete&quot;,&quot;Candy Apple Grey&quot;);" value="Button" name="ctl00$MainContent$GridView1$ctl04$Button1" id="MainContent_GridView1_Button1_2" />
            </td>
            <td>Candy Apple Grey</td>
            <td>
                <input type="submit" onclick="return doConfirm(&#39;delete&#39;,&#39;Candy Apple Grey&#39;);" value="Button" name="ctl00$MainContent$GridView1$ctl04$Button2" id="MainContent_GridView1_Button2_2" />
            </td>
            <td>Candy Apple Grey</td>
        </tr>
    </table>
</div>

单击任何按钮时,JavaScript函数会忽略HTML编码,提醒我:

Sikker på du vil delete: Zen Arcade

因此,虽然它在源代码中看起来很时髦,但引号和撇号呈现为& quot;和&#39;实际上并没有影响任何事情.

C:foreEach

C:foreEach

c:forEach 用法

 

<c:foreach> 用法

 
<c:foreach> 类似于 for 和 foreach 循环   以下是我目前见过的用法:
1、循环遍历,输出所有的元素。
<c:foreach items="${list}" var="li">
${li}
</c:foreach>
注意:items 用于接收集合对象,var 定义对象接收从集合里遍历出的每一个元素。同时其会自动转型。
2、循环遍历,输出一个范围类的元素。
<c:foreach items ="${lis}" var = "li " begin="2" end ="12">
${li}
</c:foreach>
注意:begin 定义遍历的开始位置,end 定义遍历的结束位置。begin 和 end 的引号必须写。
3、循环遍历,输出除某个元素以外的元素或输出指定元素。
<c:foreach items="${list}" var ="li" varStatus="status">
<c:if text="${status.count==1}>
${"第一个元素不要"}
</c:if>
${li}
</ c:foreach>
注意:varStatus 表示当前集合的状态(其实是不是,我也不太清楚,只知道这样用,会的人指点下),count 为循环一个计算器。
4、循环遍历,输出第一个或最后一个元素。
<c:foreach items="${list}" var ="li" varStatus="status">
<c:if text="${status.first}"> 我是第一个元素 </c:if>
<c:if text="${status.last}"> 我是最后一个元素 </c:if>
</c:foreach>
注意:first 表示如果是一个元素,则返回 ture, 反之则返回 false
           last 表示如果是最后一个元素,则返回 ture, 反之则返回 false。
5、循环遍历,按指定步长输出。
<c:foreach items="list" var ="li" step="2">
${li}
</c:foreach>

关于将c:forEach变量传递给jsp:includec语言传入变量地址的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于<%@page include%>、<%@include%>、 三者之间的本质区别、c# – asp标签内的foreach变量不存在、c# – 在onclientclick中将变量传递给javascript、C:foreEach等相关内容,可以在本站寻找。

本文标签: