2013-05-13 37 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