Передача значений с помощью ui: param и доступ к ним в компоненте Backing - PullRequest
1 голос
/ 22 марта 2011

-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 ]

2 голосов
/ 26 марта 2011

Нашел решение;

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

Скрытое значение - это outputLabel с визуализированным = false

Идея этого заключается в том, что вы можете поместить параметр в скрытое значение на своей странице JSF., а затем вы можете получить доступ к этому параметру из этого фрагмента Java.

1 голос
/ 26 ноября 2014

Я нашел другой способ отправки информации из пользовательского интерфейса: включить в компонент в JSF 2.2. Устанавливая скрытое значение и ссылаясь на метод в компоненте. например:

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

Не нужно использовать: в начальной строке в этом файле. Сначала будет задан этот скрытый параметр, который будет приводить в порядок бин. И в toInclude.xhtml будет:

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

в Бобе:

@Named(value = "toIncludeBean")
@Scope("view")
public class ToIncludeBean  {
private String value;    

public void putIdValue(String idValue) {
        //This is in my bean
        this.setValue(idValue);
    }
}
...