包含带有id param的模板,多个id

时间:2013-10-29 21:31:21

标签: jsf jsf-2

我包含一个带有通用ID的模板

<ui:include src="./buttons.xhtml">
     <ui:param name="action" value="#{bean.nextSessionId()}" />
</ui:include>

buttons.xhtml

<ui:composition>
   hello-#{action}-#{action}
</ui:composition>

输出

hello-obcpusp90m7653vci7ohh87aa3-vcv63aj2h8h8gak3dhb5do0

bean是viewscoped

private SecureRandom random = new SecureRandom();

public String nextSessionId()
{
   return new BigInteger(130, random).toString(32);
}

为什么id不等于?

我需要这个

的ID
<p:commandButton id="basic#{action}" value="Basic" onclick="dlg1#{action}.show()" type="button" process="@this"/>


<p:confirmDialog id="id#{action}" widgetVar="dlg1#{action}">  
    <p:inputText value="....."/>

    <p:commandButton oncomplete="dlg1#{action}.hide()" value="Close"/>
</p:confirmDialog>  

1 个答案:

答案 0 :(得分:0)

不要在getter方法中执行业务逻辑。 Getter方法应该返回已经准备好的 bean属性。属性的生命周期应该由持有属性的托管bean的范围来确定,该范围可以是none,request,view,session或application scoped。

E.g。

private String sessionId;

@PostConstruct
public void init() {
    SecureRandom random = new SecureRandom();
    sessionId = new BigInteger(130, random).toString(32);

public String getSessionId() {
    return sessionId;
}

<ui:param name="action" value="#{bean.sessionId}" />

请注意,我还修复了完全错误的方法名称。