【发布时间】:2014-10-29 11:27:17
【问题描述】:
我一直在尝试做一些非常简单的事情......但是它不起作用。
我有 2 个“p:selectOneMenu”,所以第二个项目取决于第一个项目中选择的项目。他们在 bean 中都有自己的方法来列出他们的项目。
我想要做的是,当第一个更改其值时,更新另一个,以便组件应该重新加载考虑到所选对象的列表。但是ajax永远不会发生,至少在调试时,Bean中的方法永远不会被再次调用。
怎么了?代码类似于...
谢谢!!! :)
<p:selectOneMenu value="#{itemBean.lotacao}">
<f:selectItem itemLabel="Choose one" />
<f:selectItems value="#{itemBean.listLotacoes()}"
var="lotacao"
itemLabel="#{lotacao.format()}" />
<p:ajax update="localizacaoPorLotacao" />
</p:selectOneMenu>
<p:selectOneMenu id="localizacaoPorLotacao"
value="#{itemBean.localizacao}">
<f:selectItem itemLabel="Choose one" />
<f:selectItems value="#{itemBean.listByLotacao(itemBean.lotacao)}" />
</p:selectOneMenu>
@ManagedBean
@SessionScoped
public class ItemBean {
// attributes, getters and setters here...
public List<Lotacao> listLotacoes() {
LotacaoService lotacaoService = new LotacaoService();
List<Lotacao> lotacoes = lotacaoService.getAll();
return lotacoes;
}
public List<Lotacao> listByLotacao(Lotacao lotacao) {
if (lotacao == null) {
return new ArrayList<Lotacao>();
}
String prefixo = lotacao.getCodigo().substring(0, 1);
LotacaoService lotacaoService = new LotacaoService();
List<Lotacao> lotacoes = lotacaoService.getByPrefix(prefixo);
return lotacoes;
}
}
【问题讨论】:
标签: java ajax jsf primefaces