更新会话后< select>标记中的值重复

pexxcrt2  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(429)

传播我的jstl标签的一段代码 <forEach> 在jsp页面上:

<select>    
    <c:if test="${!empty codeofcountries}">
      <c:forEach var="codecoun" items="${codeofcountries}">
            <option value="${codecoun.kods}">${codecoun}</option>
      </c:forEach>
  </c:if>
</select>

我的控制器:

public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
        response.setContentType(request.getResponseContentType());
        PPUZ_NDI_MNS_ENEEPortletSessionBean sessionBean = getSessionBean(request);
        if( sessionBean==null ) {
            response.getWriter().println("<b>NO PORTLET SESSION YET</b>");
            return;
        }
        sessionBean.setDefaultInfoText();

        String jsp = Start_JSP;
        switch (sessionBean.getMode()) {
            case Start:
                jsp = Start_JSP;
                break;
            case Main:
                jsp = Main_JSP;
                break;
            case Creat:
            case Edit:
            case Copy:
                jsp = CreatEdit_JSP;
        }
        request.setAttribute("codeofcountries", sessionBean.getKodNameList());
        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(getJspFilePath(request, jsp));
        rd.include(request, response);

当我转到portlet all handled well时,列表是从数组生成的,并显示在标记中 <select> 如我所需。但是当我在门户上重新运行会话时,标签(select)的值在jsp页面上被复制。不要将上一个值保留在tag(select)中,并再次向其添加相同的列表。

v9tzhpje

v9tzhpje1#

从代码来看,这些值似乎被添加到 sessionBean.getKodNameList() ,导致值重复。
为了防止这种情况,我建议调试代码并检查从何处添加值。但是,对于快速修复,可以使用unmodifiablelist或set(with) equals 以及 hashCode 在课程的各个类中实现的方法) KodNameList .

tuwxkamq

tuwxkamq2#

codeofcountries中的变量是获取所有getkodnamelist()变量,然后迭代所有这些变量并将其放入选择选项中。
因此,请确保只将要访问的内容放入setattribute变量

request.setAttribute("codeofcountries", sessionBean.getKodNameList());

另外,我认为您希望显示与值相同的内容,而不是整个数组,如下所示

<c:forEach var="codecoun" items="${codeofcountries}">
  <option value="${codecoun.kods}">${codecoun.kods}</option>
</c:forEach>
ibrsph3r

ibrsph3r3#

我在我列出的类中找到了解决问题的答案,结果发现方法和类是静态的。事实上,有几种方法可以解决这个问题,我选择了这一种。感谢您的关注!

相关问题