1

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

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

5 回答 5

1

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

toScope="sess

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

错误可能是使用 value 属性:根据http://struts.apache.org/1.2.x/userGuide/struts-logic.html#equal value is The constant value to which variables,由其他属性指定(s) 这个标签,将被比较。

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

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

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

于 2008-10-19T20:29:50.273 回答
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的方式

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

于 2008-11-07T08:28:25.983 回答
0
<logic:equal name= DropDownValue   value = NewDropDownValue>

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

于 2008-10-17T11:28:05.127 回答
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

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

于 2008-11-06T19:32:16.627 回答
0

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

于 2008-10-17T12:18:50.237 回答