2012-01-11 4 views
-1

異なるページの2つのマネージドBean間で値を渡すことはできません。 ホーム・ページに検索ボックスJSFコンポーネントを実装しています。私はいくつかの値を要求し、ユーザーが検索をヒットすると、検索結果ページに移動します。 検索結果ページには、ホームページからの検索ボックスに対応するマネージドBean内の選択項目にアクセスする必要のあるJSFコンポーネント検索RESUKTSがあります。異なるページのマネージドBean間の値を渡す

私は注入を試みましたが、Managed BEanボックスが再初期化され、デフォルト値を示しています。検索ボックス(Cinema)から興味を引いた後、検索結果に移動する検索をクリックして、映画を見たいと思っていますが、スポーツにはデフアルの価値があります。 下記のコードをご覧ください。

検索結果MANAGED私は任意の助けをいただければ幸いです

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 
import javax.faces.bean.ApplicationScoped; 
import javax.faces.bean.ManagedProperty; 


@ManagedBean 
@ApplicationScoped 
public class ExpSearchBoxMB { 
    public Date date; 
    public List<String> interests=new ArrayList<String>(); 

     public String selectedValue="Sport"; 
    public String getSelectedValue() { 
     return selectedValue; 
    } 
    public void setSelectedValue(String selectedValue) { 
     this.selectedValue = selectedValue; 
    } 

    public List<String> getInterests() { 

     interests.add("Sport"); 
     interests.add("Musin"); 
     interests.add("Art"); 
     interests.add("Thatre"); 
     interests.add("Cinema"); 
     return interests; 
    } 

    public void setInterests(List<String> interests) { 
     this.interests = interests; 
    } 

BEAN

import javax.el.ELContext; 
import javax.faces.bean.ApplicationScoped; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.RequestScoped; 
import javax.faces.context.FacesContext; 

@ManagedBean 
@ApplicationScoped 
public class ExpSearchResultsMB { 

    /** Creates a new instance of ExpSearchResultsMB */ 
    public ExpSearchResultsMB() { 
    } 


@ManagedProperty(value="#{expSearchBoxMB.selectedValue}") 
     private String selectedValue; // +setter 
    @ManagedProperty(value="#{expSearchBoxMB.text}") 
    private String prova; 

    public String getProva() { 
     return prova; 
    } 

    public void setProva(String prova) { 
     this.prova = prova; 
    } 
    public String getSelectedValue() { 

     return selectedValue; 
    } 

    public void setSelectedValue(String selectedValue) { 
     this.selectedValue = selectedValue; 
    } 
} 

検索BOX管理対象Bean。

乾杯

答えて

0

私はデバッグを言うだろうし、正しい値が利害の選択変更に設定されているかどうかを確認します。

everythigが正しいですが、まだあなたが間違った結果が、その後、あなたはこれを試すことができExpSearchResultsMB

に次のコードを使用して
FacesContext context = FacesContext.getCurrentInstance(); 
ExpSearchBoxMB expSearchBoxMBBean = (ExpSearchBoxMB) context.getApplication().evaluateExpressionGet(context, "#{expSearchBoxMB}", ExpSearchBoxMB.class); 

expSearchBoxMBBean.getSelectedValue() 
0

を試してみてください表示された場合:次に

<h:panelGrid columns="2" > 
    <h:form> 

     <h:outputLabel for="prova" value="Prova: " /> 
     <h:inputText binding="#{prova}" id="prova" /> 

     <h:outputLabel for="interest" value="Interest: " /> 
     <h:selectOneMenu binding="#{interest}" id="interest" > 
     <f:selectItems value="#{expSearchBoxMB.interests}" var="i" 
         itemLabel="#{i}" itemValue="#{i}" /> 
     </h:selectOneMenu> 

     <h:button value="Search" outcome="Result"> 
     <f:param name="prova" value="#{prova.value}" /> 
     <f:param name="interest" value="#{interest.value}" /> 
     </h:button> 

    </h:form> 
</h:panelGrid> 

をごExpSearchResultsMBに、あなたが得ることができますこのような値:

@ManagedBean 
@ViewScoped 
public class ExpSearchResultsMB { 
    private String interest; 
    private String prova; 
    private String statusMsg; 


    @PostConstruct 
    public void prepareResult() { 
     HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
     this.interest = request.getParameter("interest"); 
     this.prova = request.getParameter("prova"); 

     if (interest == null || prova == null) statusMsg = "Please provide all information"; 
     else { 
      // Prepare result to show to the user 
     } 
    } 

    // Getters and Setters 
} 

あなたはを使用している場合あなたのExpSearchResultsMB代わりに@ViewScopedため、次のように送信された値を取得するために@ManagedPropertyを使用することができます。

@ManagedProperty(value="#{param.prova}"}) 
private String prova; 
@ManagedProperty(value="#{param.interest}"}) 
private String interest; 
関連する問題