在一个JSP中,我有一个JSTL foreach
编码如下foreach var = i begin = 1 end = rowsremaining。
后来在代码中
<td class=value align=left valign=top>
<input name=${i}Last_Name value="<%=Last_Name%> type="text" />
</td>
在被调用的JSP中,我有另一个forEach var =“i”begin =“1”end = rowsremaining 在循环中...
Last_Name = (String)request.getParameter("${i}Last_Name");
问题:为什么我的所有变量姓氏,名字,地址等都被设置为空?我的意思是我可以很容易地猜到这是因为变量i没有评估我希望它会评估的记录号。第一个jsp的前面的html页面源确实显示输入标签名称等于1Last_Name 16Last_Name等等。所以我在第一个jsp中正确评估,但不是第二个。
为什么有任何想法?感谢。
答案 0 :(得分:2)
JSP EL不在Java代码中进行评估。
Scriptlets包含纯Java代码。
不要使用scriptlet。使用
${param[i + 'Last_Name']}
而不是
(String)request.getParameter("${i}Last_Name")
答案 1 :(得分:0)
我对这一行有一个问题:
<input name=${i}Last_Name value="<%=Last_Name%> type="text" />
你不应该引用你的属性值吗?
<input name="${i}Last_Name" value="<%=Last_Name%>" type="text" />
此外,声明Last_Name
的位置以及从哪个范围检索?
答案 2 :(得分:0)
可能有更多批准的方法来解决这个问题,但我通过以下方法解决了我的问题:(1)从输入标签的name属性中删除双引号,并使用记录号代替引用每条记录。 I.E. - Last_Name和(2)通过以下方式引用发布的参数Last_Name =(String)request.getParameter(Keyvalue +“Last_Name”);