1

JSF に問題があります。

JSFとprimefacesのdataTableでページを作っているのですが、datatableにvarを使うと、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;    
4

2 に答える 2

0

あなたを見せてくださいusuarioBean- それが持っているスコープは何ですか?

スコープがない (または間違ったスコープ) 場合、アクセスするたびに Bean が再構築さ#usuarioBean.listaUsuarioれます。これは、例では反復ごとに 4 回発生します。

それを避けるには、それを に@RequestScopedして、現在の Request と同じくらい存続するようにします。

Sidenode:h:datatableは、primefaces コンポーネントではありません。適切p:datatableな名前空間がインポートされます。

于 2013-08-21T17:21:05.293 に答える