У меня есть поле, которое отображается условно на основе раскрывающегося списка. Все это проходит без проблем, но когда я отправляю форму, частью которой должен быть визуализированный компонент, она не отправляется.
Код довольно прост:
<h:form id="form">
<p:layout id="layout">
...
<p:layoutUnit id="layoutUnit">
...
<p:panel id="panel">
<p:outputPanel id="container1">
<p:selectOneMenu id="value1" value="#{bean.value1}">
<f:selectItem itemValue="1"/>
<f:selectItem itemValue="2"/>
<f:selectItem itemValue="3"/>
<f:selectItem itemValue="18"/>
<p:ajax event="change" update="container2"/>
</p:selectOneMenu>
</p:outputPanel>
<p:outputPanel id="container2">
<p:inputText id="value2"
value="#{bean.value2}"
rendered="#{bean.value1 eq 18}"
>
</p:inputText>
</p:outputPanel>
</panel>
<div id="buttons">
<p:commandButton id="commandButton" action="#{bean.save}" value="save" />
</div>
</layoutUnit>
</layout>
</form>
Пробовал возможные решения:
- @ViewScoped of JSF is not usable, because it clashes with CDI
Я могу придумать несколько сценариев, вызывающих такое поведение:
- «Rendered», кажется, переоценивает на основе значений в поддерживающем bean-компоненте, а не на новых значениях, заданных в пользовательском интерфейсе (если по умолчанию 1, то при отправке снова будет 1, а не 18). Таким образом, компонент не отправляется.
- Добавленный компонент неправильно добавлен в форму и, следовательно, не отправлен.
- ?
Вариант 1 кажется наиболее вероятным, но может ли кто-нибудь указать мне правильное направление?
Я работаю с WAS8.5 (поэтому JSF2.0), Primefaces и CDI.
@ViewScoped
, совместимую с CDI. - person BalusC   schedule 22.07.2015rendered
привязка. - person Vsevolod Golovanov   schedule 22.07.2015javax.faces.FacesException: Exception while validating component with path ...
Или это не связано? - person hhschoone   schedule 22.07.2015[java-ee-7]
, когда на самом деле используете WAS 8.5 (который не является Java EE 7)? Вы управляете bean-компонентами с помощью JSF@ManagedBean
или CDI@Named
? Таким образом, вы имели в виду, что столкнулись именно с этим исключением? (который действительно потенциально связан и подлежит ответственности при сохранении@ViewScoped
кстати) Как именно это исключение связано с конфликтами с CDI? - person BalusC   schedule 22.07.2015@Named
. Изменение этого параметра на@ViewScoped
приводит к исключению, упомянутому выше. Тем не менее, вы говорите, что проблема должна быть решена с помощью@ViewScoped
вместо@Named
, чтобы не вызывать ее при работе как с JSF, так и с CDI? - person hhschoone   schedule 22.07.2015@ConversationScoped
в дополнение к@Named
кажется (?) Решением - делать что-то сравнимое с@ViewScoped
. Я просто добавил код из примера сюда а>. Единственное, в чем я сейчас не уверен, так это в том, правильно ли завершился разговор. tbc - person hhschoone   schedule 22.07.2015@ViewScoped
и@Named
не исключают друг друга.@ManagedBean
и@Named
есть. Вы можете просто использовать@Named @ViewScoped
, вам нужно только следить за тем, чтобы вы использовали CDI@ViewScoped
, а не JSF@ViewScoped
. Только CDI@ViewScoped
доступен только начиная с JSF 2.2, или вам нужно скачать OmniFaces. - person BalusC   schedule 23.07.2015@nickname
(без тегов кода), чтобы ответить конкретному человеку (в противном случае заинтересованное лицо не будет уведомлено об ответе на комментарий и увидит его позже только стечение обстоятельств). - person BalusC   schedule 23.07.2015