如何在不渲染页面的情况下使用Openfaces/JSF调用方法?

问题描述:

我试图用Openfaces 3调用Bean中的Save方法。虽然Firefox不会呈现页面,但Internet Explorer却可以。如何在不渲染页面的情况下使用Openfaces/JSF调用方法?

我目前使用此行代码:

<o:commandLink value="Save" action="#{beanX.save}"> 
    <h:graphicImage url="/images/save_48.png" /> 
</o:commandLink> 

,但我试图o:ajax还有:

<o:commandLink value="Save" action="#{beanX.save}"> 
    <h:graphicImage url="/images/save_48.png" /> 
    <o:ajax event="click" render="@none" /> 
</o:commandLink> 

任何想法?


我发现了一种处理使用标准JSF组件的方法。任何想法如何解决与o:commandLink这个问题?

+0

哪个IE版本?控制台中的任何JS错误?我不做OpenFaces,但这听起来很像是有一个JS错误,因此ajax的东西坏了,因此JSF页面优雅地降级为无jjless页面。如果是这种情况,请尝试升级OpenFaces。 – BalusC 2011-05-25 17:13:52

+0

IE 6和8.没有JS错误。但是,我找到了一个处理方法。看看我自己对这个问题的回答。感谢您的帮助。 – 2011-05-25 17:18:14

谢谢Jigar乔希。你给了我关键的提示。它的工作原理与此代码行:

<h:commandLink value="Save"> 
    <h:graphicImage url="/images/save_48.png" /> 
    <f:ajax event="click" render="@none" listener="#{beanX.save}" /> 
</h:commandLink> 

我一直在这个网站之前,我并没有在假设o:commandLink可能无法处理这一思路,可能是一个错误?

使用h:commandLink而不是o:commandLinkf:ajax使用listener属性解决了我的问题。

+0

然后它是IMO在OpenFaces中的一个错误。如果您喜欢OpenFaces,请将其报告给他们。 – BalusC 2011-05-25 17:20:31

您可以使用<f:ajax>render属性在JSF2.0

<h:form> 
     <h:inputText value="#{managedBean.val1}" > 
     <f:ajax event="keyup" render="result" listener="#{managedBean.someThingToDoListener}"/> 
     </h:inputText> 
     <h:inputText value="#{managedBean.val2}" > 
     <f:ajax event="keyup" render="result" listener="#{managedBean.someThingToDoListener}"/> 
     </h:inputText> 

     <h:outputText id="result" value="#{managedBean.result}"/> 
</h:form> 

@ManagedBean(name = "managedBean") 
public class Bean { 
    private String val1; // getter and setter 
    private String val2; // getter and setter 
    private String res; // getter and setter 
    ... 

    public void someThingToDoListener(AjaxBehaviorEvent event) { 
     //res = some processing 
    } 

} 

请参见

+0

谢谢Jigar Joshi。你已经给了我关键的提示来解决我的问题! – 2011-05-25 17:16:00

+0

不客气。 – 2011-05-25 17:20:35