0

.xhtmlページにいくつかの非表示フィールドがあります。

<h:inputHidden value="1" id="hidePrev"/>
.....
<h:inputHidden value="1" id="hideNext"/>

そして、JSFBeanからそれらの値を取得することはできません。

public class FacesUtil {
public static Object getMapValue(String key) {
    return FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get(key);
}

public static void setMapValue(String key, Object value) {
    FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(key, value);
}

}

私の豆コード:

    nextFlag = (String)FacesUtil.getMapValue("hideNext");
    prevFlag = (String)FacesUtil.getMapValue("hidePrev");

フィールドnextFlagprevFlagはまだ空です。ゲッターメソッドとセッターメソッドがあります。JSF2.2ver。を使用しています。この問題を解決するのを手伝ってください。

4

3 に答える 3

1

<h:inputHidden>フォーム送信にカスタムリクエストパラメータを追加することは意図されていません。ポストバック全体ですでに定義されているBeanプロパティを覚えておくことが目的です。<f:param>カスタムリクエストパラメータを追加するには、代わりにコマンドコンポーネントまたは「プレーンバニラ」で使用する必要があります<input type="hidden">

したがって、そう

<h:commandButton ...>
    <f:param name="prev" value="1" />
    <f:param name="next" value="1" />
</h:commandButton>

とか、ぐらい

<input type="hidden" name="prev" value="1" />
<input type="hidden" name="next" value="1" />
<h:commandButton ... />

いずれにせよ、値はリクエストスコープのBeanにあり、次のように利用できます。

@ManagedProperty("#{param.prev}")
private String prev;

@ManagedProperty("#{param.next}")
private String next;

または、より広い範囲のBeanで

String prev = externalContext.getRequestParameterMap().get("prev");
String next = externalContext.getRequestParameterMap().get("next");

リクエストパラメータとアプリケーションスコープの属性を混同していることに注意してください。これは真剣にかなり大きな混乱であり、自分が何をしているのかわからないことを証明しています。一時停止して、基本的なJSFチュートリアルをもう一度実行することを強くお勧めします。

于 2013-02-12T12:09:16.410 に答える
0

あなたはのgetApplicationMap()部分について確かFaceUtilですか?外部コンテキストに触れているときは、リクエストマップから値を取得することです。

Map<String, String> pMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

あなたの場合、pMapキーが含まれている必要がありますhideNext

于 2013-02-12T08:14:41.050 に答える
0

(String)context.getExternalContext()。getRequestParameterMap()。get(parameterName);を試してください。あなたの場合、parameterNameはnextFlagまたはprevFlagである可能性があります

于 2013-02-12T08:44:32.197 に答える