0

こんにちは、私はここでスタックオーバーフローの新人です私はprimefaces 3.5を使用しています私の質問は、静的ブロックまたはコンストラクターでselectonemenu項目(Java utilのマップ)を設定する必要があるということです..のように:

スライダー.xhtml

<h:outputLink value="circle">
<h:outputText value="click Circle!"/>
</h:outputLink>

pretty-config.xml

<url-mapping id="circle"> 
  <pattern value="/circle" /> 
  <view-id value="xhtmls/circle.xhtml" />
  <action>#{circleAction.action}</action>
 </url-mapping> 

CircleAction.java

public class CircleAction {
private String favCoffee2;
private Map<String,Object> coffee2Value;

//setter n getter

public Map<String,Object> getFavCoffee2Value() {
return coffee2Value;
}

public String action(){
coffee2Value = new LinkedHashMap<String,Object>();
coffee2Value.put("mohsin - Cream Latte", "Cream Latte"); //label, value
coffee2Value.put("mohsin - Extreme Mocha", "Extreme Mocha");
coffee2Value.put("mogsin - Buena Vista", "Buena Vista");

return "pretty:addcircle";
}           
} 

circle.xhtml

<p:selectOneMenu value="#{circleAction.favCoffee2}">
<f:selectItems value="#{circleAction.favCoffee2Value}" />
</p:selectOneMenu>

この状況ではselectOneMenuは空白ですが、アクションメソッドから以下のコードを削除して静的ブロックに配置すると、selectOneMenuはjava.util.map;にあるすべてのアイテムを生成します。

coffee2Value = new LinkedHashMap<String,Object>();
coffee2Value.put("mohsin - Cream Latte", "Cream Latte"); //label, value
coffee2Value.put("mohsin - Extreme Mocha", "Extreme Mocha");
coffee2Value.put("mogsin - Buena Vista", "Buena Vista");
4

1 に答える 1

0

問題は、にアクセスする/circleと、PrettyFaces がアクション メソッドを実行し、戻るとpretty:addcircle新しいページにリダイレクトされることです。このため、リクエスト スコープ Bean (特にマップ) のすべての値が失われます。nullメソッドから戻るだけで機能します。この場合、PrettyFaces は単に をレンダリングしますxhtmls/circle.xhtml。これはおそらくあなたが望むものです。

于 2013-03-20T06:02:10.040 に答える