single_selectionデータテーブルとコマンドボタンを含むページを取得しました。コマンドボタンは、選択が行われたかどうかを確認するBeanメソッドを呼び出します。そうでない場合は、ユーザーに警告するメッセージを表示する必要があります。選択すると、別のページに移動します。
問題は、選択がない場合にメッセージが表示されないことです。選択が行われた場合、それは正常に機能します。
このページのコードは次のとおりです。
<h:body>
<h:form id="form">
<p:dataTable id="TablaSociedades" var="soc" value="#{Sesion.tablaSociedades}" emptyMessage="No hay Registros que Mostrar" selection="#{Sesion.sociedadUsuario}">
<f:facet name="header">Sociedades asociadas al Usuario</f:facet>
<p:column selectionMode="single" style="width:18px" />
<p:column>
<f:facet name="header">
<h:outputText value="Sociedad" />
</f:facet>
<h:outputText value="#{soc.nombreSociedad}" />
</p:column>
<f:facet name="footer">
<p:commandButton action="#{Sesion.mostrarMenu()}" value="Continuar" process=":form" />
</f:facet>
</p:dataTable>
<br/>
<div>
<p:messages id="messages2" showDetail="true" autoUpdate="false" closable="true" />
</div>
</h:form>
</h:body>
そして、beanメソッドのコード:
public boolean mostrarMenu()
{
boolean resp = true;
if (sociedadUsuario.getNombreSociedad().equals("")) //no selection
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage (FacesMessage.SEVERITY_WARN,"Seleccione una Sociedad", "No puede Continuar"));
resp = false;
}
return resp;
}
コマンドボタンを2回クリックする必要があることを述べておかなければなりませんが、その問題について別の質問を投稿します。
メッセージが正しく表示されるBeanValidationを使用して別のページを作成しました。このページとの唯一の違いは、他のページにはinputText、コマンドボタン、およびメッセージのみが含まれていることです。
御時間ありがとうございます
02/25/13faces-config.xmlファイルのコード。
<navigation-rule>
<from-view-id>/elegirSociedad.xhtml</from-view-id>
<navigation-case>
<from-action>#{Sesion.mostrarMenu()}</from-action>
<from-outcome>true</from-outcome>
<to-view-id>/principal.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
以前にコメントした「2回クリック」の問題を回避するためにリダイレクトを使用しましたが、役に立ちませんでした