1
<p:messages id="lockMessage"
            for="lockMessage"
            redisplay="false"
            showDetail="true"
            autoUpdate="true"
            closable="true"/>

<h:form id="form">
    <p:remoteCommand name="updateTable" update="dataTable" process="@this"/>

    <p:commandButton oncomplete="if(args &amp;&amp;!args.validationFailed) {updateTable();}"
                     actionListener="#{bean.action}"
                     value="Save"/>

    <p:dataTable id="dataTable"/>
</h:form>

豆 :

@Named
@ViewScoped
public class Bean implements Serializable {

    private static final long serialVersionUID = 1L;

    public Bean() {}

    public void action() {
        FacesContext facesContext = FacesContext.getCurrentInstance();

        // This is needed somewhere.

        Collection<String> renderIds = facesContext.getPartialViewContext().getRenderIds();
        renderIds.clear();
        renderIds.add("lockMessage");

        // Render the message using some conditional check.

        FacesMessage message = new FacesMessage();
        message.setSeverity(FacesMessage.SEVERITY_ERROR);
        message.setSummary("Summary");
        message.setDetail("Message");
        facesContext.addMessage("lockMessage", message);
    }
}

<p:commandButton>メッセージは非常に短い間表示され、指定されたものをクリックするとすぐに消えます。

oncomplete="if(args &amp;&amp;!args.validationFailed) {updateTable();}"から を削除すると、メッセージは通常どおり表示されます<p:commandButton>

を省略したり、 to に関連付けられ<p:remoteCommand>た属性を設定したりすることは、他の特定の理由ではできません。autoUpdate<p:messages>false

<p:commandButton>指定されたが押されたときに、メッセージが正常に表示されるようにするにはどうすればよいですか?

4

0 に答える 0