PrettyFaces и JSF 2: всегда ли нам нужно передавать параметры в URL-адрес, чтобы получить их?

Всегда ли нам нужно передавать параметры в URL, чтобы получить их?

В моем примере я не могу получить свой параметр с именем «исследование»; Как мне это сделать?

Отправитель файла XHTML:

<h:commandButton  value="Send" type="button" action="pretty:participant">
    <f:param  name="study"  value ="test"  />
</h:commandButton> 

Получение файлов XHTML:

<h:outputFormat value="Print : {0} ">
   <f:param value="#{study}" />      
</h:outputFormat>

Красивый XML-файл конфигурации:

<url-mapping id="participant">
    <pattern value="/Participant/New/" />
    <view-id value="/addParticipant.xhtml" />
</url-mapping>

person ZheFrench    schedule 21.10.2013    source источник


Ответы (2)


Если вы хотите сделать это с помощью симпатичных лиц, да, вы должны это сделать, потому что это инструмент для перезаписи URL-адресов, поэтому параметры должны идти в URL-адрес. Чтобы ваш код работал, вы должны использовать тег f:viewParam перед его использованием на странице получателя:

<f:metadata>
    <f:viewParam name="study" value="#{destinationBean.study}" />
</f:metadata>

<h:outputFormat value="Print : {0} ">
   <f:param value="#{destinationBean.study}" />      
</h:outputFormat>

Однако, если вы хотите избавиться от отправки параметра через URL-адрес, в качестве альтернативы у вас есть флеш-область. Это, однако, касается JSF, а не Prettyfaces. Если вы хотите использовать это решение, я настоятельно рекомендую вам избегать ранних версий Mojarra JSF 2.x, поскольку они содержат ошибки, связанные с этим.

person Xtreme Biker    schedule 21.10.2013
comment
Хорошо. Так что это заставляет меня думать, что есть проблема с безопасностью. Пользователь может передать каждую строку в URL-адресе, и она будет рассматриваться как параметр, поэтому мне нужно контролировать параметр в компоненте поддержки. Как вы справляетесь с этим? Это было в начале причиной, по которой я хотел бы скрыть параметры в URL-адресе браузера. Другая идея, это действительно плохой способ смешивать навигацию JSF с PrettyFaces. Я объясняю свою точку зрения. Если вы передаете пареметры с вашим URL-адресом в ‹to-view-id›, то можете ли вы использовать симпатичные лица, чтобы переписать URL-адрес, используя этот параметр, на что-то независимое. - person ZheFrench; 22.10.2013
comment
Prettyfaces каким-то образом преобразует красивые URL-адреса в обычные. Вы можете определить свое представление как /Participant/New/#{param}, и тогда пользователь сможет ввести /Participant/New/myParam, чтобы быть перенаправленным на /addParticipant.xhtml?param=myParam. Это также позволяет пользователю напрямую вводить последний URL-адрес для перенаправления на ту же страницу. Проблема с безопасностью? Нет проблем, пока вы правильно обрабатываете проверку параметров. Помните, что запросы GET не должны изменять состояние БД, они выполняются только для получения данных. Достаточно использовать хорошую проверку и предотвратить внедрение sql. - person Xtreme Biker; 22.10.2013