Struts OGNL, если оператор, связанный с переменной класса действия, не работает,

Проблема в том, что внутри моего класса действий у меня есть одна переменная:

 private String commentAdd = "yes";

И класс действия переходит к reslut.jsp, внутри reslut.jsp у меня есть:

<s:set name="allowAddComment" value="commentAdd"/>
<s:if test="%{#allowAddComment=='yes'}">
                    <script type="text/javascript">
                        window.close();
                    </script>
</s:if>

но это не работает, может ли какой-нибудь эксперт дать мне какое-то предложение? Спасибо.


person user1055108    schedule 24.02.2012    source источник


Ответы (2)


Несколько вещей.

  • Свойство должно быть открыто через общедоступный геттер (или в более поздних версиях S2 в качестве общедоступного члена, но лучше использовать геттер).
  • Зачем использовать строку как логическое значение? Просто используйте логическое значение.
  • Зачем устанавливать свойство в другую переменную? Просто используйте свойство.

Вы уверены, что это действительно то, что вам нужно? Это закроет окно, как только скоро отобразится этот JavaScript. Если это нормально, хорошо — хотя, если это так, зачем вообще рендерить окно?

person Dave Newton    schedule 24.02.2012
comment
спасибо за совет, я только что увидел эту статью: mkyong.com/struts2/struts-2-if-elseif-else-tag-example, и как вы думаете, jsp может получить переменную внутри связанного класса действий, даже если эта переменная является частной? Но судя по вашим комментариям, проблема в том, что jsp не может получить частную переменную. Я прав? - person user1055108; 24.02.2012
comment
@user1055108 user1055108 На этой странице есть геттер для свойства framework. Я не понимаю, почему он использует дополнительную переменную; это бессмысленно. - person Dave Newton; 24.02.2012
comment
@ Дэйв Ньютон, да, это меня тоже смущает. И в jsp они никогда не вызывают метод get, будет ли метод get вызываться struts? - person user1055108; 24.02.2012
comment
@ user1055108 Вам нужно прочитать, как работает Struts 2; в выражениях JSP OGNL вы ссылаетесь на свойство по имени. Вы можете получить к нему доступ, вызвав геттер, но для этого нет причин. - person Dave Newton; 24.02.2012
comment
@ Дэйв Ньютон, я знаю, как это работает, мне нужно что-то сделать в xml, можете ли вы привести пример, потому что мой jsp все еще не может выполнить внутренний js. - person user1055108; 24.02.2012
comment
@user1055108 user1055108 Не похоже, раз ты спросил, как это работает. Что вы имеете в виду, внутри JS? В том, что вы опубликовали, нет ничего внутри JS. - person Dave Newton; 24.02.2012
comment
давайте продолжим это обсуждение в чате - person user1055108; 24.02.2012
comment
@ Dave Newton Моя программа сейчас работает, но, похоже, мне нужно установить s: set для установки переменной, если использовать переменную действия напрямую, это не сработает. - person user1055108; 25.02.2012
comment
@user1055108 user1055108 Если вы не можете напрямую получить доступ к свойству действия, вероятно, что-то еще не так - оно должно работать нормально. Попробуйте открыть еще один вопрос или добавить дополнительную информацию к этому. Однако рад, что это работает. - person Dave Newton; 25.02.2012

person    schedule
comment
где я буду выполнять метод isAddComment(). И должен ли ‹s:if test=%{addComment}› добавить #: ‹s:if test=%{#addComment}›? - person user1055108; 24.02.2012