JSF не отображается, когда в URL есть параметр - PullRequest
0 голосов
/ 30 июля 2010

Моя проблема в том, что когда я, например, делаю это

<h:outputLink value="changeinfo.jsf">
                Change name
                <f:param name="change" value="name"/>
</h:outputLink>

, тогда запрашиваемый URL-адрес

http://localhost:45054/WMC/user/changeinfo.jsf?change=name

Мой шаблон URL для сервлета лица выглядит так

<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>

Теперь на странице changeinfo

<f:verbatim rendered="#{'bean.param'} == 'name'"> 
NAME 
<h:form id="form1"> 
... 
</h:form>
</f:verbatim>

Затем на сгенерированной html-странице я вижу только слово NAME, а не форму.Почему это?

Ответы [ 2 ]

2 голосов
/ 31 июля 2010

Вы не можете поместить компоненты JSF в f:verbatim, только простой ванильный HTML.Вместо этого используйте h:panelGroup.

Кроме того, избавьтесь от этих кавычек вокруг идентификатора свойства компонента в EL.В противном случае он будет рассматриваться как простая ванильная строка.Вы также должны поместить сравнение строк в выражение EL.

Суммировано:

<h:panelGroup rendered="#{bean.param == 'name'}">
    ...
</h:panelGroup>

В качестве дополнительной подсказки: вы можете просто получить доступ к параметрам запроса:#{param}.Если вам больше не нужно это в управляемом компоненте, вы можете просто сделать это:

<h:panelGroup rendered="#{param.change == 'name'}">
    ...
</h:panelGroup>
0 голосов
/ 30 июля 2010

Вы видели это: Как создать запрос GET с параметрами, используя JSF и правила навигации ?

Проблема не в расширении, а в том, что JSF не поддерживает этот подход «из коробки». Если вам нужно кодировать решение McDowell или изменить веб-фреймворк, используя, например, Seam .

Кстати, JSF 2 будет поддерживать этот стиль навигации. Взгляните на: fluent-navigation-jsf-2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...