2013-03-26 27 views
0

我有一个命令按钮,它绑定了它的操作方法。如果导航保持不变,样式不会加载JSF页面

<f:view > 
    <pm:page title="Title"> 
     <pm:view id="viewId" swatch="c"> 
      <p:outputPanel id="panelId"> 
       <h:form id="formId"> 

    <p:commandButton action="#{bean.actionMethod}" update="formId" value="Click" /> 
          </h:form> 
        </p:outputPanel> 
       </pm:view> 
    </pm:page > 
</f:view> 

内部操作方法。导航引用同一页面。一些值在动作方法内更新。

public String applyPeriod(String caller) 
{ 
    ..... 
    retrun SAMEPAGE; 
} 

一切都好。但样式不呈现。该页面将返回到默认样式。

任何想法如何加载样式。我不想通过进行真正的更新来更改URL。我应该通过ajax调用来管理它。

我跟踪页面的请求。风格完全没有要求。

我使用primefaces,primefaces mobile,它是一个移动页面。

+0

如果您的托管bean重新初始化,请检查您的bean的属性是否也重新初始化为某个默认值。 – 2013-03-26 08:30:41

+1

相关:http://stackoverflow.com/questions/8634156/how-to-reference-components-in-jsf-ajax-cannot-find-component-with-identifier/你当前的更新客户端ID正在寻找' ** **里面的表单,它不是指表单本身。 – BalusC 2013-03-26 16:15:16

回答

2

如果你没有使用:背后表单的ID我相信问题可以与一个部件相对于搜索,试图寻找基于相对标识符的形式。通过使用不同元素的ID,您可以获得预期的行为,因为它们是以相对于您的<p:commandButton/>的上下文的相对方式正确引用的,所以我按下了。

尝试使用update="@form"update=":formId"。另外,作为一个附注,如果你想使用完整的ajax,并且你不会在任何地方重定向用户,你的方法应该是void或者返回null

+0

详细BalusC答案:http://stackoverflow.com/questions/8634156/how-to-reference-components-in-jsf-ajax-cannot-find-component-with-identifier/ – erencan 2013-03-27 09:13:09

0

我真的不知道背后的原因。但是,我通过给出确切的组件ID来更新commandButton的属性来解决问题。

<p:commandButton action="#{bean.actionMethod}" update="ListOfComponentIds" value="Click" />