Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取JSF中的请求参数值_Java_Jsf - Fatal编程技术网

Java 获取JSF中的请求参数值

Java 获取JSF中的请求参数值,java,jsf,Java,Jsf,我有一个组件。在这里面,我在组件中有一个页面。我想从我的托管bean类的中的页面访问一个值(inputtext或radiobutton)。请告诉我该怎么做。请注意,我不想在这里使用会话。我要的只是请求。我尝试了以下选项,但它们对我不起作用 选择一 String value = (String) ctx.getExternalContext() .getRequestParameterValuesMap()

我有一个
组件。在这里面,我在
组件中有一个页面。我想从我的
托管bean类的
中的页面访问一个值(inputtext或radiobutton)。请告诉我该怎么做。请注意,我不想在这里使用会话。我要的只是请求。我尝试了以下选项,但它们对我不起作用

选择一

String value = (String) ctx.getExternalContext()
                        .getRequestParameterValuesMap()
                        .get("managedbean.property");
选择二

String value = (String) ctx.getExternalContext()
                         .getRequestParameterValuesMap()
                         .get("property");
选择三

HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance()
                         .getExternalContext().getRequest();
System.out.println(req.getParameter("property"));
选择四

Map requestMap = FacesContext.getCurrentInstance() 
                         .getExternalContext().getRequestHeaderValuesMap(); 
String msgId = (String) requestMap.get("property"); 
System.out.println(msgId);
选择五

HttpServletRequestWrapper r = new HttpServletRequestWrapper(req);
String value1 = r.getParameter("managedbean.property");


我希望该值不在jsp的托管bean中。。。但我希望它在另一个托管bean中。在这里,我将页面放在一个页面中(正如我所提到的,它是一个选项卡式面板)。现在我想要外部选项卡的托管bean中的值–

我不完全理解您的问题。如果
inputtext
radiobutton
已正确绑定到支持bean中的值,则可以直接在Java中访问该值。如果您感兴趣的是托管bean的编程查找,那么我就是这样做的:

FacesContext facesContext = FacesContext.getCurrentInstance();
MyBean currentProperty = (MyBean) facesContext.getELContext().getELResolver().getValue(facesContext.getELContext(), null, "nameOfTheBackingBean");

您的控件位于IBMODC面板内这一事实与此无关

通常,您会将输入控件绑定到托管bean值

Bean定义:

<managed-bean>
  <managed-bean-name>demo</managed-bean-name>
  <managed-bean-class>foo.MyManagedBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
如果您想将输入控件绑定到另一个bean和具有应用程序逻辑的bean,那么可以使用属性注入来引用另一个bean

<managed-bean>
  <managed-bean-name>demo</managed-bean-name>
  <managed-bean-class>foo.MyManagedBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
    <property-name>propName</property-name>
    <value>#{someExpression}</value>
  </managed-property>
</managed-bean>

演示
foo.MyManagedBean
要求
专有名称
#{someExpression}

您可以通过上下文直接查找内容,或者使用表达式类通过代码解析内容,但这是一种更简洁的方法。

首先解释一下您尝试的选项不起作用的原因:

选项1和2无效,因为它以
字符串[]
的形式返回值(!!),而不是以
字符串的形式返回单个值

如果参数存在,选项3应该可以工作。但这不是一个很好的JSF方式

选项4无效,因为未在请求标头中设置参数

选项5是无效的,因为它根本没有意义。您只是在中间添加了一个额外的抽象层,实际上并没有改变任何东西


JSF ish的方法是使用:

Map parameterMap=(Map)externalContext.getRequestParameterMap();
字符串param=parameterMap.get(“paramName”);
至于选项3不起作用的原因,很可能是因为参数名称与您的想法/预期不同。JSF即基于视图树中的父级
UINamingContainer
组件预先设置(woodstocks)客户端ID。右键单击webbrowser中JSF页面生成的HTML输出,然后选择View Source。检查生成的感兴趣的
元素的名称。改用该名称作为参数名称



这就是说,这毕竟是一个解决办法,而不是一个解决方案。但我们无法合理地建议真正的解决方案,因为功能需求和代码还不完全清楚。您通常将输入元素绑定到支持bean。如果您实际上在一个不同的backingbean中,那么您也可以从backingbean中访问该backingbean,然后依次访问与它绑定的输入值。请参阅以获取操作方法。

我希望该值不在jsp的托管bean中。。。但我希望它在另一个托管bean中。在这里,我将页面放在一个页面中(正如我所提到的,它是一个选项卡式面板)。现在我想要外部的托管bean中的值tab@tejas-a-使用
托管属性
将属性从一个bean注入到另一个bean中-请参阅最后一节。
package foo;
public class MyManagedBean {
  private String foo;
  public String getFoo() { return foo; }
  public void setFoo(String foo) { this.foo = foo; }

  public String invokeMe() {
    System.out.println(foo);
    return null; //no navigation
  }
}
<managed-bean>
  <managed-bean-name>demo</managed-bean-name>
  <managed-bean-class>foo.MyManagedBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
    <property-name>propName</property-name>
    <value>#{someExpression}</value>
  </managed-property>
</managed-bean>
Map<String, String> parameterMap = (Map<String, String>) externalContext.getRequestParameterMap();
String param = parameterMap.get("paramName");