2012-06-03 153 views
0

此问题一直困扰着我,直到永无止境!JSF使用jQuery Mobile进行Ajax调用

我看到论坛帖子JSF f:ajax listener not called其中描述了我的确切问题。

我正在使用JSF 2.0,并使用Jquery mobile作为扩展库。

我实际上已将代码完全从帖子中复制到我的项目中(如下所示)。

我在会话范围中设置了相同的托管bean,打印出一行。我可以看到bean在第一个输入文本上成功执行,其中一个分配了ajax监听器

但它不适用于按钮。在我的用例中,我希望按钮只能作为调用托管bean的桥梁,所以不希望表单提交。

我完全丧失了为什么bean没有执行?

我没有覆盖JS类,并且只使用Jquery移动。

这是Jquery框架的限制吗?或者更可能是我的代码问题?

小号

<h:form id="f1"> 
<h:panelGroup id="switchSearchTexts"> 
    <h:inputText accesskey="s" alt="Search" id="searchBoxPeople" title="Search Plebeians" valueChangeListener="#{peopleBean.simplePersonQuery}" size="25" rendered="#{peopleBean.easySearch}"> 
     <f:ajax render="peopleDataTable" event="keyup" listener="#{contactsBean.morePressed}" 
       immediate="true"/> 
    </h:inputText> 

    <h:inputText accesskey="s" alt="Search First Name" id="searchBoxFN" title="Search First Name" size="25" rendered="#{!peopleBean.easySearch}"> 
     <f:ajax render="moreButtonAsText" event="keyup" /> 
    </h:inputText> 
</h:panelGroup> 

<div id="expandBox"> 
    <h:inputText id="searchBoxLN" alt="Search Last Name" styleClass="hideToggle" title="Search Last Name" size="25" /> 
    <h:inputText id="searchBoxAddress" alt="Search Address" styleClass="hideToggle" title="Search Address" size="25" /> 
</div> 

<h:commandButton type="button" styleClass="moreButtonAsText" id="moreButtonAsText" value="More"> 
    <f:ajax listener="#{contactsBeanFaces.morePressed}"/> 
</h:commandButton> 
</h:form> 

***修正****


我的道歉,我认真地乱投医!并发布错误的代码迭代!
我发现一个很棒的笔记: http://java.dzone.com/articles/ajax-jsf-joined这得到了巨大的帮助,但是仍然没有成功。我觉得jquery mobile正在搞乱这个事件?

我相信也可能有一个按钮需要在一个窗体?

对不起,基本的问题,但我是一个Jdeveloper的家伙,谁是学习倒退....东西的DOM和客户端java/html方面几乎不公平地隐藏与此应用程序。我喜欢客户端库,并通过这个过程学习了很多东西......但强烈的要求是我可以调用服务器端逻辑!

任何想法将非常感激!

+0

想要在每个键盘上点击'moreButtonAsText'按钮? – Daniel

+0

我的歉意,我认真地尝试了一切!并发布错误的代码迭代! – MagicFlow

+0

哦,对不起,丹尼尔 - 不,我只是想能够执行一个bean(我使用这个用于服务器端行集操作)是主要的细节关系。我想创建一个编辑地址屏幕,以一种形式显示员工的地址 - 只显示选定的地址。要做到这一点,我想在服务器上执行一个托管bean来选择显示/编辑所选择的记录。我将使用用户单击选择记录并启动此过程。 – MagicFlow

回答

0

好的解决了。

问题是托管bean需要使用正确的签名事件作为输入参数进行设置。通过大量测试,我试图用AjaxBehaviorEvent来使用同一个类。就像在前一个论坛中的例子一样。

当我声明一个ActionListener事件(符合按钮jsf动作)时,该bean被执行!

St,and and and and shows shows what what!!!!

谢谢丹尼尔!

S