1

<f:viewParam>と の使用に完全に行き詰まってい<f:viewAction>ます。

このような類似の質問をいくつか読みましたが、まだ機能していません。

次のような簡単な例:

test.xhtml

<h:head>
    <title>Test</title>
</h:head>
<h:body>

    <f:view>
        <f:viewParam name="reason" value="#{testBean.reason}"/>
        <f:viewAction action="#{testBean.examineReason}"/>
    </f:view>

    <h:outputText value="Reason=#{testBean.reason}"/>
</h:body>

TestBean

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@RequestScoped
public class TestBean {

    private String reason;

    @PostConstruct
    private void init() {
        System.out.println("urlParameter: "
                        + FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("reason"));

    }

    public void examineReason() {
        System.out.println("Reason is " + reason);
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
        System.out.println("Reason set: " + reason);
    }

}

GET リクエストは、次によって開始されます。

<h:button outcome="/pages/test.jsf" value="GET">
    <f:param name="reason" value="abcd" />
</h:button>

System.out レポートのみ:

urlParameter: abcd

f:viewParam も f:viewAction もまったく機能していないようです。

Tomcat 8.0.32 で Mojarra 2.2 と MyFaces 2.2 をテストしました

私は何が欠けていますか?

編集:

問題が解決しました:<f:metadata>タグがありませんでした。さらに、 は<f:metadata>の子であってはなりません<h:body>。test.xhtml を次のように変更すると、うまくいきました。

<h:head>
    <title>Test</title>
</h:head>
<body>

    <f:view>
        <f:metadata>
        <f:viewParam name="reason" value="#{testBean.reason}"/>
        <f:viewAction action="#{testBean.examineReason}"/>
        </f:metadata>
    </f:view>

    <h:outputText value="Reason=#{testBean.reason}"/>
</body>
4

0 に答える 0