我是我的jsp代码:
<%
for (int i = 0; i < list.size(); i++) {
Entry var = (Entry) list.get(i);
out.println(var.getCn().replace("cn=", ""));
String cn = var.getCn();
out.println("<form method=\"get\" action=\"Controller\">"
+ "<input type =\"hidden\" name=\"act1\" value = \"" + cn.replace("cn=", "") + "\">"
+ "<button type=\"submit\" name=\"act\" value=\"SHOW\" id=\"act\" >Show</button>"
}
进入JSTL:
<c:forEach var="item" items="${list}">
<p>
<c:out value="${item.getCn()} "></c:out>
<p>
<c:set var="item" value="${item.getCn()}"></c:set>
<input type ="hidden" name="act1" value ="??????????????">
<button type="submit" name="act" value="SHOW" id="act">Show</button>
</c:forEach>
我不知道如何传递参数“value”,可以通过cn.replace(“cn =”,“”)使用jsp轻松上传到我的servlet。
答案 0 :(得分:1)
首先删除以下行:
<c:set var="item" value="${item.getCn()}"></c:set>
它覆盖了<c:forEach var="item">
。
关于具体问题,你可以使用单引号来表示EL中的字符串。
<input ... value="${item.cn.replace('cn=', '')}">
请注意,在javabean属性上,您不必像${item.getCn()}
那样指定整个方法名称。您可以使用${item.cn}
。
无关具体问题,请注意,如果它涉及用户控制的输入,但仍然容易出现XSS attack hole,但是您的原始 scriptlet 方法也是。
答案 1 :(得分:1)
我相信您可以像使用{001}上的item
一样使用变量cn
。尝试这样的事情:
value ="${item.replace('cn=', '')}"
我不确定您的JSP中是否存在名为item
的两个变量的问题,您可能希望更改其中一个变量的名称以防万一。这将是整个代码:
<c:forEach var="item" items="${list}">
<p>
<c:out value="${item.getCn()} "></c:out>
<p>
<c:set var="cn" value="${item.getCn()}"></c:set>
<input type ="hidden" name="act1" value ="${cn.replace('cn=', '')}">
<button type="submit" name="act" value="SHOW" id="act">Show</button>