【问题标题】:Struts Logic ProblemStruts 逻辑问题
【发布时间】:2008-10-17 10:55:54
【问题描述】:

为什么下面的代码不起作用?这个想法是页面检查下拉变量是否在您上次刷新页面后发生了变化。

 <logic:equal name="Result" value = "-1">
   <bean:define id="JOININGDATE" name="smlMoverDetailForm" property="empFDJoiningDate"
         type="java.lang.String" toScope = "session" />
 </logic:equal> 


 <logic:equal name="Result" value = "-1">
   <bean:define id="DropDownValue" name="smlMoverDetailForm" property="moverChangeType" 
type="java.lang.String" toScope = "session" />              
</logic:equal>

<-- when you fisrt access this page from the above are run -->

 <bean:define id="NewDropDownValue" name="smlMoverDetailForm"
  property="moverChangeType" type="java.lang.String" toScope = "sess

<-- this happens everytime the page is refreshed-->

   <logic:equal name= DropDownValue   value = NewDropDownValue>
    <bean:define id="JOININGDATE" name="smlMoverDetailForm"
  property="empFDJoiningDate" type="java.lang.String" toScope = "session" />
   </logic:equal> 

    <logic:notEqual name="DropDownValue"   value = "NewDropDownValue">
    <bean:define id="DropDownValue" name="smlMoverDetailForm" 
    property="moverChangeType" type="java.lang.String" toScope = "session"
     />              
    </logic:notEqual>    

【问题讨论】:

    标签: java struts tags logic


    【解决方案1】:

    您已经意识到,您的 bean:define - 至少在您在这里提出的问题中 - 是有缺陷的?

    toScope="sess
    

    很可能不是您想要的 - 它甚至不会终止标签。但这可能是 StackOverflow 中的格式......此外,其他答案中也提到了缺少的引号。

    错误可能是使用了 value 属性:根据http://struts.apache.org/1.2.x/userGuide/struts-logic.html#equal value 是 这个标签的其他属性指定的变量将与之比较的常量值。

    因此,鉴于您已经定义了一个名为 NewDropDownValue 的 bean,您可能想要评估

    <logic:equal name="DropDownValue" value="<%=NewDropDownValue/>">
    

    编辑:此外,我不记得当您仅有条件地定义一个 bean 时会发生什么 - 您的 bean 是在一个可能会或可能不会被评估的 logic:equal 块中定义的。它可能是合法的并且有明确的结果,我只是不记得了......

    【讨论】:

      【解决方案2】:
      <logic:equal name= DropDownValue   value = NewDropDownValue>
      

      我不确定这是否是您的问题(请描述如何它不起作用),但上面的 xml 无效:它需要在属性值周围加上引号。

      【讨论】:

      • 我已经尝试重新添加引号,但它仍然不起作用。我得到一个 jsp 编译错误:moverDetailC.jsp(192,39) equal symbol expected' line 192 is 非常感谢任何 helod
      【解决方案3】:

      问题是正如您所描述的,我无法获得逻辑标签来评估定义的 bean 中保存的值。

      【讨论】:

        【解决方案4】:

        实际上,我并没有真正得到你想要的,但这里有一些伪代码(删除那些危险的尖括号)你的问题中的代码

        if result == -1
           define JOININGDATE
        end
        if result == -1
           define DropDownValue
        end
        

        这可能是一个错误(您可能想检查一次“等于”,一次检查“不等于”)或者写得更短更清楚

        if result == -1
           define JOININGDATE
           define DropDownValue
        end
        // otherwise don't define both values
        

        如果您在这些逻辑标签中放置一些输出并发布输出和更多上下文(例如实际参数值 - 什么是“结果”,您的问题可能会得到更好的答案(或由您自己回答) ')。但是 - 你是从一个未注册的帐户发布的,并且已经有一段时间没有被看到了......

        【讨论】:

          【解决方案5】:

          试试这个:

          <logic:equal name="Result" value = "-1">
             <bean:define id="JOININGDATE" name="smlMoverDetailForm" property="empFDJoiningDate"
                   type="java.lang.String" toScope = "session" />
           </logic:equal> 
          
          
          <logic:equal name="Result" value = "-1">
             <bean:define id="DropDownValue" name="smlMoverDetailForm" property="moverChangeType" 
                  type="java.lang.String" toScope = "session" />              
          </logic:equal>
          
          <!-- when you fisrt access this page from the above are run -->
          
          <bean:define id="NewDropDownValue" name="smlMoverDetailForm"
              property="moverChangeType" type="java.lang.String" toScope = "session"/>
          
          <!-- this happens everytime the page is refreshed-->
          
          <logic:equal name="DropDownValue" value="<%=request.getSession().getAttribute("NewDropDownValue").toString()%>">
              <bean:define id="JOININGDATE" name="smlMoverDetailForm"
                  property="empFDJoiningDate" type="java.lang.String" toScope ="session" />
          </logic:equal>
          
          <logic:notEqual name="DropDownValue" value="NewDropDownValue">
              <bean:define id="DropDownValue" name="smlMoverDetailForm" 
                  property="moverChangeType" type="java.lang.String" toScope = "session"/>              
          </logic:notEqual>
          

          错误更正:

          • 评论格式不正确
          • 第三次未正确结束
          • 改变获取NewDropDownValue的方式

          我认为这些更改将使其正常运行。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多