Как передать параметр в поток граней

Я пытаюсь передать параметр (или даже объект) в поток граней. Но все статьи, которые я нашел, передают параметры из одного потока в другой. Я хочу передать параметр из простого запроса, который запускает поток.
Как мне этого добиться? Что такое лучшая практика?

Вот образец:

<p:commandLink action="regularDemand">
***<!-- <f:param name="paramName" value="paramValue" /> -->***
    <p:panel header="Header" style="height: 300px;">
         <p:outputLabel value="Some text." />
    </p:panel>
</p:commandLink>

regularDemand это Name потока, который называется.

1 ответ

Я не знаю, является ли это уникальным способом, но я сделал это, используя вспышку.

У меня есть такой боб:

public class CreateAdBean {
    public String createAd(Integer adId) {
        if (adId != null) {
            FacesContext.getCurrentInstance().getExternalContext().getFlash().put("adId", adId);
        }
    }

    return "adFlow";
}

Когда я хочу запустить поток с параметром, я вызываю этот метод bean-компонента, передавая этот параметр, помещаю его во флэш-память и возвращаю имя потока, в данном случае "adFlow", которое запускает поток.

На первой странице потока, adFlow.xhtml, у меня есть <f:metadata/> вызов метода, который использует параметр во флэш-памяти:

<f:metadata>
      <f:event type="preRenderView" listener="#{adFlowBean.loadExistingAd()}"/>
</f:metadata>

В потоке bean я делаю:

public class AdFlowBean {
    public void loadExistingAd() {
        Integer id = (Integer) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("adId");
         if (id != null) {
             //do something with the parameter
         }
    }
}

Я надеюсь, что это поможет.

Другие вопросы по тегам