5

我是 JSF 的新手,想要一个按钮,单击该按钮将调用支持 bean 的方法。这是可能的还是我必须使用 AJAX 之类的?我尝试过类似的事情

<button onclick="#{myManagedBean.myMethod()}">MyButton</button>

但他们没有工作。正常的做法是什么?

编辑:
该按钮是由 JqueryUI 创建的,我无法将按钮的类型更改为 commandButton。我只能做两个自定义 -
1. 从该按钮调用 javascript 函数
2. 更改表单的目标(按钮所在的内部)
那么,我怎样才能从这两种方式调用支持 bean 方法,比如从 Javascript还是在表单上提交?

4

4 回答 4

4

在 JSF 中,您有 JSF 组件的操作参数,可以绑定到托管 bean 中的方法。使用此方法绑定,您可以调用托管 bean 的方法。

<h:commandButton value="click" action="#{managedbean.method}"/>
于 2014-01-02T07:12:25.347 回答
3

onClick 用于调用客户端脚本功能,如 java 脚本。为了调用服务器端的方法(支持 bean),您需要使用 commandButton 组件的 action 属性。JSF 为此目的提供了一个组件 h:commandButton。使用 commandButton 调用支持 bean 中的方法的语法是

 <h:commanButton value="button" action="#{myBean.methodName()}"/>

您正在调用的方法应该是 form String methodName(),其中返回的 String 值表示导航处理程序用来确定接下来要显示的页面的结果。

编辑:

为了从您的按钮调用支持 bean 方法,请使用按钮的 onClick 属性来调用 javascript 函数。您需要在表单中创建一个隐藏按钮,该按钮调用所需的支持 bean 方法。在 javascript 函数中,使用以下代码单击隐藏按钮,从而调用支持 bean 方法。

  document.getElementById('form:button').click();
于 2014-01-02T07:15:03.210 回答
2

你必须使用 jsf 命令按钮组件

<h:commandButton value="MyButton" action="#{myManagedBean.myMethod()}"></h:commandButton>
于 2014-01-02T07:11:34.773 回答
1

其实 Adarsh 已经回答的很好了,我这里要补充的是一个可选的选择,用 jQuery 调用 JSF backing bean 函数,也很方便,你可以在 jQuery 的帮助下在点击按钮时添加更复杂的逻辑。

您可以使用 JSF h:commandButton,此外,您可以action在元素中添加一个属性来调用您的 JSF 支持 bean 函数。

例如<h:commandButton value="Update" id="update" action="#{myPageBean.updateMyPage}"></h:commandButton>

您可能已经注意到onClick()上面示例中未显示的或类似的事件,实际上这部分工作将由 jQuery 作为事件处理和处理来处理。

var updateButton = $(document.getElementById("myPage:update"));例如,使用或查找您的按钮,然后使用 jQuery函数 var updateButton = $(#"myPage\\:update")); 在您的按钮上注册点击事件为click()updateButton.click(function() {...do whatever you want here...});

最终效果应该是当你点击你的 JSF 页面按钮时,它会调用 JSF backing bean 方法 as updateMyPage,希望对你有所帮助。

于 2016-12-21T00:00:37.080 回答