Struts逻辑问题

时间:2008-10-17 10:55:54

标签: java struts tags logic

为什么下面的代码不起作用?我们的想法是页面检查下拉变量自上次刷新页面后是否有变化。

 <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>    

5 个答案:

答案 0 :(得分:1)

你已经意识到,你的bean:定义 - 至少在你在这里陈述的问题 - 是否有缺陷?

toScope="sess

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

错误可能是使用value属性:根据http://struts.apache.org/1.2.x/userGuide/struts-logic.html#equal值is 将比较由此标记的其他属性指定的变量的常量值。< / em>的

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

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

编辑:此外,我不记得当你只是有条件地定义一个bean时会发生什么 - 你的bean是在一个逻辑中定义的:可能会或可能不会被评估的相等块。它可能是合法的并且已经定义了结果,我只是记不住......

答案 1 :(得分:0)

<logic:equal name= DropDownValue   value = NewDropDownValue>

我不确定这是不是你的问题(请说明 它不起作用),但上面的内容不是有效的xml:它需要围绕属性值的引号。

答案 2 :(得分:0)

问题在于你的描述我无法获得逻辑标记来评估定义的bean中保存的值。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

试试这个:

<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的方式

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