Значение, установленное h: selectOneMenu, равно нулю в методе прослушивания f: ajax - PullRequest
1 голос
/ 30 января 2012

Я пытаюсь использовать AJAX в своем веб-приложении JSF 2.0 и у меня проблема с получением текущего значения из selectOneMenu.

Часть моей страницы JSF.

<h:panelGrid columns="2">
<h:outputLabel value="Appendix number" for="appendix" />
<h:selectOneMenu id="appendix" value="#{indexMBean.appendix}">
<f:selectItem itemLabel="Point 1" itemValue="1" />
<f:selectItem itemLabel="Point 2" itemValue="2" />
<f:ajax event="change" listener="#{indexMBean.setHazardsByAppendix}" />
</h:selectOneMenu>
</h:panelGrid>

setHazardsByAppendix - это процедура в indexMBean. Затем процедура запускается, я пытаюсь получить текущее значение h: selectOneMenu для передачи его на другую процедуру.

public void setHazardsByAppendix() {
    Logger logger = Logger.getAnonymousLogger();
    logger.warning(this.appendix);
    this.setHazards(this.hazardSessionBean.getHazardByAppendix(this.appendix));
}

Но текущее значение приложения поля всегда равно нулю. Как это вызвано и как я могу решить это?

Ответы [ 3 ]

0 голосов
/ 30 января 2012

Этот код вызывает событие AjaxBehaviour и передает значение в контроллер через Ajax.

<h:panelGrid columns="2">
<h:outputLabel value="Appendix number" for="appendix" />
<h:selectOneMenu id="appendix" value="#{indexMBean.appendix}">
<f:selectItem itemLabel="Point 1" itemValue="1" />
<f:selectItem itemLabel="Point 2" itemValue="2" />
<f:ajax execute="@this"listener="#{indexMBean.setHazardsByAppendix}" />
</h:selectOneMenu>
</h:panelGrid>
//Controller
public void setHazardsByAppendix(AjaxBehaviorEvent event) {
    Logger logger = Logger.getAnonymousLogger();
    logger.warning(this.appendix);
    this.setHazards(this.hazardSessionBean.getHazardByAppendix(this.appendix));
}
0 голосов
/ 04 февраля 2012

Решено очень странным способом. Я создал новый проект NetBeans с теми же источниками. И это удивительно хорошо работает. Это действительно странно, но это работает.

0 голосов
/ 30 января 2012
   `<f:ajax execute="@this" listener="#{templateSearchHandler.OnDefNameSelect}">
 void setHazardsByAppendix(AjaxBehaviorEvent event) {
    Logger logger = Logger.getAnonymousLogger();
    logger.warning(this.appendix);
    this.setHazards(this.hazardSessionBean.getHazardByAppendix(this.appendix));
}`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...