【问题标题】:logic:present not working as expected逻辑:目前没有按预期工作
【发布时间】:2012-02-26 06:37:46
【问题描述】:

我已将代码压缩到最简单的部分,以尽可能清楚地说明我的问题。

我希望格式没问题 - 这是我第一篇使用 stackoverflow 的帖子,无论我做了什么,缩进 4 个空格或使用 ctrl-K,编译器都不满意。

当 LinkedList 应该并且看起来是空的时,我的 addAssignment.jsp 显示标题“消息”。如果 LinkedList 中没有消息,我希望 logic:present 标签排除标题“消息”的打印。如果 LinkedList 中没有消息,如何防止打印标题“消息”?

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Add Assignment Page</title>
  <style type="text/css">table { margin-left:5%; }</style>
</head>
<body>
  <table>
    <tr>
      <td>
        <logic:present name="messages">
          <h3>Messages:</h3>
          <logic:iterate id="msg" name="messages">
            <bean:write name="msg" /><br />
          </logic:iterate>
        </logic:present>
      </td>
    </tr>
  </table>
  <table>
    <tr>
      <td>
        <H1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add Assignment</H1>
      </td>
    </tr>
  </table>
  <html:form action="addAssignmentAction" focus="injuredWorkersFirstName">
    <table>
      <tr>
        <td>First name</td>
        <td>&nbsp;&nbsp;&nbsp;
            <html:text property="injuredWorkersFirstName" />
        </td>
      </tr>
      <tr>
        <td class="100PixCentered">&nbsp;</td>
        <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;<html:submit>submit</html:submit>
        </td>
      </tr>
    </table>
  </html:form>
</body>
</html>

LoginAction 文件说明了我如何使用 LinkedList。此外,LoginAction 可以与 Login.jsp 页面、LinkedList 以及 Logic 和 Bean 标记一起正常工作。也就是说,当 LinkedList 中存在错误消息时,Login.jsp 页面会在标题 Messages 下正确地显示它们。

public class LoginAction extends Action {

    public void execute(Object data) { }

    public ActionForward execute(ActionMapping mapping, ActionForm form, 
             HttpServletRequest request, HttpServletResponse response) throws Exception {

        LinkedList messages = new LinkedList();
        String returnValue = "success";

        if ((((LoginForm) form).getName() == null) 
                || ((((LoginForm) form).getName()).length() == 0)) {
            messages.add("bad name");
            returnValue = "error";
        }

        if ((((LoginForm) form).getPassword() == null) 
                || ((((LoginForm) form).getPassword()).length() == 0)) {
            messages.add("bad password");
            returnValue = "error";
        }

        request.setAttribute("messages", messages);
        return mapping.findForward(returnValue);
    }
}

Struts 配置:

<struts-config>
  <data-sources></data-sources>
  <!-- ========== Form Bean Definitions =================================== -->
  <form-beans>
    <form-bean name="loginForm" type="package1.LoginForm" />
    <form-bean name="AddAssignmentForm" type="package1.AddAssignmentForm" />
  </form-beans>
  <!-- ========== Action Mapping Definitions ============================== -->
  <!-- Action Mappings Configuration -->
  <action-mappings>
    <action path="/login" type="package1.LoginAction" name="loginForm" 
        scope="request" validate="false" input="/index.jsp">
      <forward name="success" path="/addAssignment.jsp"></forward>
      <forward name="error" path="/index.jsp"></forward>
    </action>
    <action path="/addAssignmentAction" type="assignment.AddAssignmentAction" 
        name="AddAssignmentForm" scope="request" validate="false" 
        input="/addAssignment.jsp">
      <forward name="success" path="/mainMenu.jsp"></forward>
      <forward name="error" path="/addAssignment.jsp"></forward>
    </action>
  </action-mappings>
  <!-- ========== Message Resources Definitions =========================== -->
</struts-config>

【问题讨论】:

    标签: jsp struts struts-1


    【解决方案1】:

    你的期望是错误的。如其名称和文档所示,&lt;logic:present&gt; 如果请求中存在值,则执行主体。属性是否是一个空列表无关紧要:属性存在,执行主体。

    您应该改用&lt;logic:notEmpty&gt; 标签,或者更好的是,忘记这些过时的逻辑标签,改用JSTL &lt;c:if&gt; 标签:

    <c:if test="${!empty messages}"> ... </c:if>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2016-11-09
      相关资源
      最近更新 更多