我有一个搜索表单(名称= studentForm),该表单已提交给struts2动作,该动作从db中获取数据并以表单(名称= studentListForm)返回到JSP。
当我使用s:property时,我可以从操作表单中获取属性,而EL为空。
行动
private int pageNumber; /** some code here **/ setPageNumber(1); public int getPageNumber() { return pageNumber; } public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber; }
JSP
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <s:form id="studentListForm" name="studentListForm" action="student.do" method="post" class="pure-form pure-form-aligned"> <table width="50%"> <tr> <td align="center" colspan="2"> <!-- This works --> <s:property value="pageNumber"/> <!-- This doesn't --> <c:out value="${studentListForm.pageNumber}"></c:out> </td> </tr> </table> <div id="hiddenFields"> <s:hidden key="pageNumber"></s:hidden> </div> </s:form> </html>
您需要更改EL才能在中找到您的操作变量valueStack。
valueStack
<c:out value="${pageNumber}"/>
请注意,valueStack由于Struts请求包装器,EL表达式应有权访问变量。请参阅我们如何在框架中使用JSTL。