2013-03-08 77 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。

相关问题