-1

我有一个带有搜索值的文本框,我想通过单击按钮将此字符串发送到服务器端。不是通过表单提交,而是通过 ajax 调用。

我在输入标签本身中添加了一个 actionListener,它被称为模糊。但我真正想要的是用户点击按钮来触发搜索功能。

我从这个问题中得到了一个想法,并以这种方式实现了它:

<h:inputText id="likeMaterial" value="#{createBookingForm.searchText}"></h:inputText>
<a4j:jsFunction name="setParameterAndRerender" actionListener="{bean.searchMaterials}" reRender="searchResult">
    <a4j:actionparam name="param1" assignTo="#{createBookingForm.searchText}"/> 
</a4j:jsFunction> 
<h:commandButton value="Search" onclick="setParameterAndRerender('mySearchText');return false;"></h:commandButton>

服务器端收到的值当然是“mySearchText”。我如何传递用户输入的内容?#{createBookingForm.searchText}或者在调用按钮的动作侦听器之前如何绑定?

我对任何其他方法持开放态度。不过我有一些限制:我正在努力增强一个使用 JSF 1.1 构建的遗留应用程序。我不能升级,至少不是没有战斗!

编辑:我试过这样做但我在服务器端得到“未定义”。

4

3 回答 3

3

为什么不使用a4j:commandButtonh:commandButton 来代替?它将执行 ajax 请求并呈现您想要的内容。不会发生任何表单提交。看起来像你需要的。

于 2014-03-13T14:22:51.733 回答
0

这是整个解决方案

<h:inputText id="likeMaterial" value="#{createBookingForm.searchText}"></h:inputText>
<a4j:commandButton reRender="searchResult" actionListener="#{createBookingForm.searchMaterials}">
    <a4j:actionparam name="param1" noEscape="true" value="document.getElementById('likeMaterial').value" assignTo="#{createBookingForm.searchText}" />
</a4j:commandButton>
于 2014-03-19T09:25:06.910 回答
0

h:commandButton默认情况下,单击时提交表单。因此无需专门使用a4j:jsFunction或以任何其他方式发送。除非您有其他事情要做,否则您可以完全删除您的 js 函数。如果您想测试添加一个操作方法并在 createBookingForm bean 中打印 searchText 变量的值。

希望这可以帮助!!

于 2014-03-08T18:35:44.677 回答