выберите раскрывающийся список в стойках2, переходя от стояков1 к стойкам2 - PullRequest
0 голосов
/ 06 июня 2018

Ниже приведен фрагмент кода Struts1 из jsp

<logic:notEmpty name="user" property="myLanguages" scope="session">
                       <html:select name="user" property="defaultLanguage">
                         <html:optionsCollection label="languageName" name="user" property="myLanguages" value="languageCode"/>
                       </html:select>
</logic:notEmpty>

Ниже приведен фрагмент кода Struts2 (версия 2.5.16) из jsp, который не работает

<s:if test="%{#session.user.myLanguages != null && #session.user.myLanguages != ''}">
                          <s:select list="{#session.user.myLanguages}"
                                      listKey="languageCode" listValue="languageName"
                                      name="user"  value="defaultLanguage"/>
</s:if>

Ниже приведен код сценарияиз jsp

<%
User user = (User) session.getAttribute("user");
Vector vMyLang = user.getMyLanguages();
        System.out.println("logon.jsp:vMyLang--- "+vMyLang);
        if(null != vMyLang){
            System.out.println("logon.jsp:vMyLang-----  "+vMyLang.size());//here output(i.e size) is 20
        }
%>

Таким образом, значения существуют в сеансе, но я не могу использовать теги strut2 , в журналах нет ошибок / исключений

Код Struts1 работает нормально, код Struts2 не работает (я имею в виду выпадающий список не отображается в пользовательском интерфейсе)

Пожалуйста, помогите мне, какую ошибку я сделал.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Исправлено с приведенным ниже фрагментом кода

<s:if test="%{#session.user.myLanguages != null}">
                          <s:select list="%{#session.user.myLanguages}"
                                      listKey="languageCode" listValue="languageName"
                                      value="%{#session.user.defaultOperaLanguage}/>
</s:if>
0 голосов
/ 06 июня 2018

JSP и скриптлет не эквивалентны.

В вашем скриплете вы вызываете метод с именем myLanguages().

В вашем теге <s:if /> вы пытается вызвать метод с именем getMyLanguages().

Поскольку вы не следуете соглашениям об именах JavaBean, вы не можете использовать синтаксический сахар, предоставляемый OGNL, и вам нужно будет на самом деле вызватьmethod.

Примечание. Необходимо соблюдать соглашения об именах JavaBean;они конвенция по причине.Любая Java, использующая рефлексию, например OGNL, требует этого.

...