2013-03-08 84 views
2

我需要通過形式獲取輸入並將值放入Bean字段中。如何從重定向中讀取JSF中的GET請求參數

之後,我想,通過按下一個按鈕豆動作將被觸發,當它完成

我需要通過使用HREF移動到另一個頁面。

我嘗試這樣做:

<div class="getname"> 
    <h:form> 
     Enter name 
     <h:inputText value="#{bean.name}" /> 
     <br/> 
    </h:form> 

    <h:commandButton value="Purchase" action="#{bean.sendName}"/> 
    <a href="name.jsf?id=#{bean.id}" /> 
</div> 

我設法移動到右側name.jsf頁面(根據ID),但不會被觸發的動作。

有什麼想法?

回答

2

commandButton組件是將表單值提交到他們的託管屬性。要做到這一點,你必須把它放在<h:form>組件中。

此外,在調用操作後,您不需要單獨的鏈接來離開頁面。託管bean Action方法可以返回一個String,它定義了FacesServlet將向前導航的導航。

@ManagedBean("bean") 
public class MyBean { 

    private String id; 
    private String name; 

    /// property accessors and other stuff 

    public String sendName() { 
    // do stuff 
    return "name.jsf?id=" + this.id; 
    } 
} 

當動作完成時,此返回值指示您導航到該定義的視圖。

+0

這是我之前做的,但問題是,這個Bean是@RequestScoped,如果我移動到name.jsf時使用那種類型的內部接口?id = page正在清理bean的內容,我需要內容在name.jsf?id = page – user1692261 2013-03-08 19:12:38

+0

@ user1692261我不明白... ID作爲URL中的請求參數傳遞。您將能夠從另一個bean中的請求參數映射中獲取它。 – 2013-03-08 19:22:41

+0

@ user1692261 ..'name.jsf?id'是否使用不同的bean? – SRy 2013-03-08 19:23:38

0

命令按鈕和HREF都是不同的操作,單擊命令按鈕將執行行動,並點擊HREF將用戶的網頁name.jsf

<h:commandButton value="Purchase" action="#{bean.sendName}"/> 
    <a href="name.jsf?id=#{bean.id}" /> 

你需要像這樣在bean

@ManagedBean("bean") 
public class TestBean { 

    @ManagedProperty(value = "#{param.id}") 
    private String id; 
    private String name; 

    public String sendName() { 
    //do stuff 
    return "name.jsf?id=" + this.id; 
    } 
} 

你也可以做到這一點在你的XHTML得到相同的結果,

<f:metadata> 
    <f:viewParam name="id" value="#{bean.id}" /> 
</f:metadata> 

在bean初始化之前,上面的行將在請求參數id中設置bean中的參數id。

相關問題