我遇到了JSF的问题。
我用JSF和primeTable的数据表创建了一个页面,但我意识到我使用var到datatable,JSF多次重新加载一个相同的get方法。 我不知道如果因为JSF或我的程序,有人可以帮助我吗?
<p:dataTable var="Usuario" value="#{usuarioBean.listaUsuario}"
paginator="true" rows="10" selection="#{usuarioBean.usuario}"
rowKey="#{Usuario.id}"
id="dataTable"
paginatorPosition="bottom">
<p:column headerText="ID" style="width: 10px">
<h:outputText value="#{Usuario.id}"/>
</p:column>
<p:column headerText="Nome">
<h:outputText value="#{Usuario.nome}"/>
</p:column>
<p:column headerText="E-mail">
<h:outputText value="#{Usuario.email}"/>
</p:column>
<p:column headerText="Telefone" style="width: 10px">
<h:outputText value="#{Usuario.telefone}"/>
</p:column>
<p:column headerText="Editar" style="width: 10px;">
<p:commandLink id="btnEditar" action="#{usuarioBean.ChamareditarUsuario()}" ajax="false" title="Editar">
<h:graphicImage value="/resources/img/editar.png" style="position: relative; top: 25%; left: 25%;" />
<f:setPropertyActionListener value="#{Usuario}" target="#{usuarioBean.usuario}" />
</p:commandLink>
</p:column>
<p:column headerText="Excluir" style="width: 10px;">
<p:commandLink id="btnDeletar" title="Deletar" action="#{usuarioBean.deletarUsuario()}" update="dataTable">
<h:graphicImage value="/resources/img/deletar.png" style="position: relative; top: 25%; left: 25%;"/>
<f:setPropertyActionListener value="#{Usuario}" target="#{usuarioBean.usuario}" />
</p:commandLink>
</p:column>
<p:column selectionMode="single" width="1%"/>
</p:dataTable>
@ManagedBean
@RequestScoped
public class UsuarioBean {
private Usuario usuario = new Usuario();
private String campo;
private String valor;
private List<Usuario> listaUsuario;
private String acesso;
private List<Acesso> listaAcesso;
答案 0 :(得分:2)
答案 1 :(得分:0)
显示你的usuarioBean
- 它有什么范围?
如果它没有Scope(或者是错误的范围),那么每次访问#usuarioBean.listaUsuario
时都会重建bean - 在你的例子中,每次迭代将发生4次。
为避免这种情况,请将其设为@RequestScoped
,因此它与当前请求一样长。
Sidenode:h:datatable
不是primefaces组件。导入正确的命名空间将为p:datatable
。