【问题标题】:JSP, JSTL forEach with ArrayList and select box option带有 ArrayList 和选择框选项的 JSP、JSTL forEach
【发布时间】:2017-01-02 16:12:35
【问题描述】:

我有一个带有表单的 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 等方面做错了什么?

亲切的问候

编辑:忘了说正确的选择值会被发送回服务器...

【问题讨论】:

    标签: java jsp arraylist foreach liferay


    【解决方案1】:

    我的错误是,projectAssistant 在我的pageContext 中不存在 - 所以${projectAssistant} 不起作用。我想我也可以通过 EL 访问 scriptlet 变量。

    要纠正这个问题,我要做的就是&lt;c:set var="projectAssistant" value="&lt;%=projectAssistant %&gt;" /&gt; 在我的页面上下文中将&lt;% String projectAssistant = ... %&gt;称为projectAssistant

    【讨论】:

      猜你喜欢
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多