2013-05-13 105 views
-3

后不工作我有这样的JSF按钮,当它按下它调用Java方法:JSF按钮AJAX调用

<h:commandButton id="editdata" value="HiddenDelete" style="position:absolute; bottom:25px; right:650px;" actionListener="#{bean.saveData}" rendered="#{bean.editable}"> 
    <f:ajax render="@form" execute="@form"></f:ajax> 
</h:commandButton> 

public void saveData() throws SQLException 
{ 
..... 
} 

当我做一个AJAX调用按钮不能正常工作。你能帮我找出为什么在AJAX调用之后不调用Java方法吗?

+2

请从http://stackoverflow.com/a/2120183排除原因或发布SSCCE。目前的代码不在SSCCE风格。复制代码并手动添加从问题中省略的最小必需代码,以使其按规范/文档工作(例如,添加缺少的“ActionEvent”参数,该参数应该引发异常),但它工作正常对我来说(也可能是其他人)。要了解如何创建合适的SSCCE,请仔细阅读http://stackoverflow.com/tags/jsf/info没有SSCCE,您的问题基本上是无法回答的。 – BalusC 2013-05-15 16:16:41

+2

如果你从开发人员的角度而不是从最终用户的角度来阐述问题,那么你会为我们自己和我们一个忙。你只是说“不起作用”,就好像你是最终用户一样。这个不对。你应该告诉整个过程失败的具体步骤。触发DOM点击事件?准备ajax请求?发送ajax请求? JSF解码ajax请求?识别点击的按钮?排队行动事件?调用动作事件?等等 – BalusC 2013-05-15 16:23:19

+0

彼得,你有没有尝试过将事件传递给你的方法(正如我的回答中所建议的,也是由BalusC提及的)?如果是这样,你能分享你的更新代码和结果案例吗? '工作不正常'是不够的。同时分享bean的注释和'saveData'和'editable'的实现。 – Aquillo 2013-05-16 10:06:08

回答

0

你不及格事件:

public void saveData(AjaxBehaviorEvent event) { ... } 

而且,你能指望什么用Exception你扔的情况发生?你不应该抓住它吗?

try { 
    // logic 
} 
catch(SQLException ex) { 
    FacesContext facesContext = FacesContext.getCurrentInstance(); 
    FacesMessage facesMessage = new FacesMessage( 
     "There was an error, ...."); 
    facesContext.addMessage(null, facesMessage); 
} 

这将以HTML格式打印<h:messages />

+0

我更新了代码,但没有更改。 – 2013-05-13 10:44:04

+0

那么,如果你实现了我的例子中给出的代码,那么问题可能是其他地方引起的。您是否使用''标签而不是''?普通的HTML标签不包含'javax.faces.jsf.js',这是一个必要的库,可以让你使用ajax。 – Aquillo 2013-05-13 11:11:10

+0

这是完整的源代码:http://pastebin.com/LQ5VSnXE – 2013-05-13 11:40:14