我有一个带有表单的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等做错了什么?
亲切的问候
编辑:忘记说正确的选定值会被发送回服务器......
答案 0 :(得分:0)
我的错误是,我projectAssistant
中没有pageContext
- 所以${projectAssistant}
无效。我以为我也可以通过EL访问scriptlet变量。
要解决此问题,我必须做的就是<c:set var="projectAssistant" value="<%=projectAssistant %>" />
在我的网页上下文中将<% String projectAssistant = ... %>
称为projectAssistant
。