我有一个带有表单的 portlet jsp。表单的内容将发送并存储到服务器。下次呈现带有 Portlet 的站点时,将使用先前选择的值预填充表单。这适用于一个例外:我的一个选择框:
.JSP:
// get value chosen before:
<% String projectAssistant = ... %> // This get's the correct string value
<aui:select name="<%=// assistant name %>">
<c:forEach items="${iStaffList}" var="option">
<aui:option value="${option}" selected="${option==projectAssistant ? true : false }">${option}</aui:option>
</c:forEach>
</aui:select>
控制器:
ArrayList<String> staffList = _staffListAdapter.getStaffListAsStrings();
renderRequest.setAttribute("iStaffList", staffList);
这会导致一个预填充的选择框,其中包含我ArrayList
中的所有选项。但是,当我从列表中的第一个选项中选择其他选项,提交然后重新加载页面时,再次预先选择了第一个值,而不是之前选择的值。
我从基本String[]
预填充了另一个选择框,这工作正常。这里是工作选择框的代码:.JSP:
// get project status
<% String projectStatus = .... %>
<aui:select name="<%= //projectStatus name %>">
<c:forEach items="${STATUS_OPTIONS}" var="option">
<aui:option value="${option}" selected="${option==projectStatus ? true : false }">${option}</aui:option>
</c:forEach>
</aui:select>
控制器:
renderRequest.setAttribute("STATUS_OPTIONS", ProjectStatusConstants.STATUUS);
哪里
public class ProjectStatusConstants
{
public static String[] STATUUS = {"", "Draft", "Submitted", "Passed",
"Running", "Closed", "Rejected"};
}
我在ArrayList等方面做错了什么?
亲切问候
编辑:忘了说正确的选择值被发送回服务器...
我的错误是,projectAssistant
不存在于我的pageContext
- 所以${projectAssistant}
不起作用。我以为我也可以通过 EL 访问脚本变量。
为了纠正这一点,我所要做的就是<c:set var="projectAssistant" value="<%=projectAssistant %>" />
在我的页面上下文中<% String projectAssistant = ... %>
称为projectAssistant
。