从JSP传递值到JSF页面支持Bean

时间:2011-07-26 05:35:03

标签: java jsp jsf javabeans

是否可以将参数从JSP页面传递到JSF页面的辅助bean?

当我调用JSF页面中的一个按钮和我在JSP页面中选择的值时,JSP页面弹出窗口打开,我应该能够传递给JSF的支持bean。

P.S。当我添加评论时,当有人回复时我放了@anyname,@ Namyname部分被截断了。

更新1

为了从JSP到bean获取所选值,我做了一个粗略的方法。

我在JSP

中添加了以下内容
String str = request.getParameter("selectname");

并将字符串str分配给隐藏字段

 <input type="hidden" name="hid" value="<%=str%>"  /> 

在我的bean中,我得到的值如下

logger.info("jsp value "+FacesContext.getCurrentInstance().getExternalContext()
               .getRequestParameterMap().get("hid"));

这几乎可以工作,除了我总是得到我之前选择的值。 例如。第一次当我选择1并且bean中返回的值为null时,第二次当我选择2时,返回的值为1.

如何在我的bean中获取当前选定的值?

2 个答案:

答案 0 :(得分:2)

首先,如果您的JSF视图技术是JSP,那么您可以使用jsp中的<h:>标记,它变得简单0只需添加<h:commandButton action="#{yourBean.yourMethod}" />

否则,您仍然可以,但我建议您将弹出窗口设置为JSF页面。 JSF和JSP不能很好地共存。如果你真的必须保留这种情况,那么你可以尝试模拟对目标jsf URL的JSF POST请求。

答案 1 :(得分:1)

f:viewParam允许您关联bean 带请求参数的属性 -

- 这引入了几项新功能

  • 通过GET而非POST进行导航的新标签 通过GET导航而不是POST,并发送参数和 地址
  • 将数据从非JSF表单发送到JSF页面
  • 将结果页面结果页面设为可收藏
  • 这是JSF 2.0中的新功能
  • 例如: <f:viewParam name="fg" value="#{colorPreferences.foreground}" />
  • 如果“fg”参数为非null,则传递给它 在呈现页面之前的setForeground

    <f:metadata>
    <f:viewParam name="param1" value="#{bean.prop1}"/>
    <f:viewParam name="param2" value="#{bean.prop2}"/>
    </f:metadata>
    <h:head>…</h:head>
    <h:body>
    Blah Blah blah #{bean prop1} , blah, #{bean.prop1}
    </h:body>
    

    如果使用page.jsp?param1=foo&param2=bar调用该页面,则“foo”“bar”会传递给“setProp1”在呈现页面之前使用“setProp2”。如果任何参数为null(即,不存在此类请求参数),则根本不调用关联的setter,并且bean具有该属性的正常值

您可以从JSF教程http://www.coreservlets.com/JSF-Tutorial/jsf2/

中找到答案