关于request.getParameter和JSTL

时间:2014-08-26 14:41:48

标签: java jsp jstl

在一个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中正确评估,但不是第二个。

为什么有任何想法?感谢。

3 个答案:

答案 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”);