Логическая задача Struts

Почему приведенный ниже код не работает? Идея состоит в том, что страница проверяет, не изменилась ли переменная раскрывающегося списка с момента последнего обновления страницы.

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

person Community    schedule 17.10.2008    source источник


Ответы (5)


Вы поняли, что ваш bean:define - по крайней мере, в вашем вопросе, изложенном здесь, - ошибочен?

toScope="sess

скорее всего, это не то, что вы хотите - он даже не завершает тег. Но это может быть форматирование в StackOverflow... Кроме того, в других ответах упоминались отсутствующие кавычки.

Ошибка может заключаться в использовании свойства value: Согласно http://struts.apache.org/1.2.x/userGuide/struts-logic.html#equal значение равно постоянному значению, которому присваивается переменная, указанная другими атрибутами этого тега. будут сравниваться.

Таким образом, учитывая, что вы определили bean-компонент с именем NewDropDownValue, вы можете захотеть оценить

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

Изменить: Кроме того, я не могу вспомнить, что происходит, когда вы только условно определяете bean-компонент - ваш bean-компонент определяется внутри блока logic:equal, который может оцениваться или не оцениваться. Это может быть законно и иметь определенные результаты, я просто не могу вспомнить...

person Olaf Kock    schedule 19.10.2008

<logic:equal name= DropDownValue   value = NewDropDownValue>

Я не уверен, что это ваша проблема (опишите, как это не работает, пожалуйста), но приведенный выше недействительный xml: ему нужны кавычки вокруг значений атрибута.

person Sietse    schedule 17.10.2008
comment
Я попытался добавить кавычки обратно, но это все равно не работает. я получаю ошибку компиляции jsp: moverDetailC.jsp(192,39) ожидаемый эквивалентный символ 'строка 192 - это ‹logic:equal name= DropDownValue value = NewDropDownValue› любой helod очень ценится - person ; 17.10.2008

Проблема в том, что, как вы описываете, я не могу заставить логические теги оценивать значения, содержащиеся в определенных компонентах.

person Community    schedule 17.10.2008

На самом деле, я не очень понимаю, чего вы хотите, но вот некоторый псевдокод (удаляющий эти опасные заостренные скобки) вашего кода в вопросе

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

Ваш вопрос может получить лучшие ответы (или вы сами ответите на него), если вы поместите некоторый вывод внутри этих логических тегов и опубликуете как вывод, так и немного больше контекста (например, фактические значения параметров - что такое «Результат»). Но потом - вы разместили сообщение с незарегистрированного аккаунта и какое-то время вас не видели...

person Olaf Kock    schedule 06.11.2008

Попробуй это:

<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

Я думаю, что эти изменения заставят его работать правильно.

person Fred    schedule 07.11.2008