有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用ui:param传递值并在backingbean中访问它们

-xhtml文件

我无法访问传递的参数

<ui:insert>
        <ui:include src="#{PopUpBean.includeUrl}">
           <ui:param name="includeParam" id="includeParam" value="HalloWert!"  />                                  
        </ui:include>
</ui:insert>

这就是我尝试访问参数的方式,我在调试器的帮助下查看了每个变量,但似乎没有传递ui:param值:

    private void init () {
   FacesContext ctx =  FacesContext.getCurrentInstance();
   ExternalContext ectx = ctx.getExternalContext();
   Object o = ectx.getRequestParameterMap().get("includeParam");
   Object request =  ectx.getRequest();
}

@PostConstruct
public void postContruction () {
    this.init();
}

谢谢你的帮助


共 (2) 个答案

  1. # 1 楼答案

    我找到了另一种发送信息的方法,从UI:Include发送到jsf2.2中的Bean。通过设置隐藏值并引用bean中的方法。 例如:

    <ui:include src="/toInclude.xhtml">
        <ui:param name="idValue"
         value="#{masterBean.idValue}" />
    </ui:include>
    

    不需要使用:在这个文件的起始行。 这个隐藏的参数将被放在第一位,这将在bean中按顺序设置。 在这一部分。xhtml将是:

    <h:inputHidden id="idValue"
            value="#{toIncludeBean.putIdValue(idValue)}" />
    

    在Bean中:

    @Named(value = "toIncludeBean")
    @Scope("view")
    public class ToIncludeBean  {
    private String value;    
    
    public void putIdValue(String idValue) {
            //This is in my bean
            this.setValue(idValue);
        }
    }
    
  2. # 2 楼答案

    找到了解决方案

      HtmlOutputLabel ob = (HtmlOutputLabel) UiTreeWalker.findComponent(FacesContext.getCurrentInstance().getViewRoot(), "hiddenValue");
           ValueExpression vb = ob.getValueExpression("value");
          Object value =  vb.getValue(FacesContext.getCurrentInstance().getELContext());
    

    Hidden Value是rendered=false的outputLabel

    这背后的想法是,您可以将参数放在JSF页面上的一个隐藏值中,然后可以从这个java代码段访问该参数