Java Struts逻辑问题

Java Struts逻辑问题,java,struts,tags,logic,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:

为什么下面的代码不起作用?其思想是,页面检查下拉变量自上次刷新页面以来是否有更改

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


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



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

问题在于,正如您所描述的,我无法获取逻辑标记来评估定义bean中的值

问题在于,正如您所描述的,我无法获取逻辑标记来评估定义bean中的值

您已经意识到,您的bean:define(至少在您的问题中)存在缺陷

toScope="sess
很可能不是您想要的-它甚至不会终止标记。但这可能是StackOverflow中的格式设置。。。此外,其他答案中也提到了缺失的引语

错误可能是由于使用了value属性:根据value是将此标记的其他属性指定的变量与之进行比较的常量值

因此,假设您已经定义了一个名为NewDropDownValue的bean,那么您可能需要对其进行求值

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


编辑:此外,我记不起当您仅有条件地定义bean时会发生什么情况-您的bean是在逻辑:相等块中定义的,该逻辑块可能会被计算,也可能不会被计算。它可能是合法的,并且已经定义了结果,我只是不记得…

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

toScope="sess
很可能不是您想要的-它甚至不会终止标记。但这可能是StackOverflow中的格式设置。。。此外,其他答案中也提到了缺失的引语

错误可能是由于使用了value属性:根据value是将此标记的其他属性指定的变量与之进行比较的常量值

因此,假设您已经定义了一个名为NewDropDownValue的bean,那么您可能需要对其进行求值

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


编辑:此外,我记不起当您仅有条件地定义bean时会发生什么情况-您的bean是在逻辑:相等块中定义的,该逻辑块可能会被计算,也可能不会被计算。它可能是合法的,并且已经定义了结果,我只是不记得…

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

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

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

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

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

请尝试以下操作:

<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的方式
我认为这些更改将使其正确运行。

尝试以下操作:

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

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

我已尝试重新添加引号,但仍然不起作用。我得到一个jsp conpile错误:moverDetailC.jsp(192,39)equal symbol expected'第192行是任何helod,我非常感激我已经尝试添加引号,但仍然不起作用。我得到一个jsp conpile错误:moverDetailC.jsp(192,39)equal symbol expected'第192行是任何helod都非常感谢的