使用 ui:param 传递值并在 Backing bean 中访问它们

发布于 2024-10-26 02:46:34 字数 733 浏览 3 评论 0原文

-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();
}

谢谢您的帮助!

-xhtml File

I cannot accsses the passed Parameter

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

Thats the way i tried to accses the parameters, i have lookedup every variable with help of the debugger, but it seems as if the ui:param value isn't passed:

    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();
}

Thank you for help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦回旧景 2024-11-02 02:46:34

找到解决方案;

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

隐藏值是一个带有 render = false 的outputLabel

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

Found a Solution;

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

Hidden Value is a outputLabel with rendered = false

The idea behind this is that you can put the parameter in a hidden value on your JSF page, and then you can access that parameter from this java snippet.

佞臣 2024-11-02 02:46:34

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

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

不需要在该文件的起始行使用:。
这个隐藏参数将被首先放置,并将按顺序设置在 bean 中。
在 toInclude.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);
    }
}

I found another way to send information, from UI:Include to Bean in JSF 2.2. By setting a hidden value and reference a method in the bean.
for instance:

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

Don't needed to use: at the intitial line in this file.
This hidden parameter will be put at first, that will be setting in the bean in order.
And in the toInclude.xhtml will be:

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

in the 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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文