2016-11-18 19 views
0

什麼是正確的方式來從一個方法在託管bean返回一個值,指示成功SQLDML操作如INSERTUPDATEJSF模態顯示文本,如果INSERT操作成功

基於教程和一些博客我看了網上,它說,從包含在ManagedBean方法返回值一個很好的做法是faceletString值或.xhtml頁面 (換句話說,一個視圖)重定向到一個網頁。

像這樣。

原始版本:

@ManagedBean(name="myBean") 
public class MyBean{ 
    public String register(){ 
     String SQL = "INSERT INTO myTable(col1,col2) VALUES(?,?); 
     PreparedStatement ps = connection.prepareStatement(SQL); 
     ps.setString(1,someStringVariable1); 
     ps.setString(2,someStringVariable2); 
     ps.executeUpdate(); 

     return "index"; //pointing to index.xhtml 
    } 
} 

怎麼樣,如果我想知道,如果executeUpdate()方法是成功的?

我想我只是將其更改爲類似

修改版本:

public int register(){ 
     int isSuccessful = 0; 
     try{ 
      String SQL = "INSERT INTO myTable(col1,col2) VALUES(?,?); 
      PreparedStatement ps = connection.prepareStatement(SQL); 
      ps.setString(1,someStringVariable1); 
      ps.setString(2,someStringVariable2); 

      isSuccessful = ps.executeUpdate(); 
     } 
     return isSuccessful; 
    } 

然而,在修改後的版本,我返回int,我沒有看到的是正確的每如何JSF應該ManagedBean工作(請糾正我,如果我錯了)

我問因爲說我有一個Twitter Bootstrapmodal它具有以下內容。

<div class="modal-body"> 
    <h:form> 
     //....some code here... 

     <h:commandButton value="Submit" action=#{myBean.register()} 
     <h:outputText value=" #{myBean.whatToPutHere_ToKnowIf_addData()wasSuccessful}" /> 
    </h:form> 
</div> 

我需要能夠內modaldiv表明register()執行成功。

什麼是最簡單和最正確的方法來實現呢?

我在某處讀到AJAX會幫助,但現在我對AJAX知之甚少,所以也許一個簡單的解決方案就更好了。

我很感激任何幫助。

謝謝。

+1

Ajax是 '簡單' 開始學習吧... – Kukeltje

回答

0

您可以使用一個bean變量:

@ManagedBean(name="myBean") 
public class MyBean { 
    private boolean isSuccessful = false; 

    public boolean isSuccessful() { return isSuccessful; } 

    public String register(){ 
    isSuccessful = ... 
    } 
} 

,並在你的XHTML

 .... 
    <h:commandButton value="Submit" action="#{myBean.register()}" /> 
    <f:ajax execute="@form" render="outtext" /> 
    </h:commandButton> 
    <h:panelGroup id="outtext"> 
    <h:outputText value="any Text" rendered="#{myBean.successful} /> 
    </h:panelGroup> 
</h:form> 
+1

的'update'屬性不會做任何事情在'h:commandButton'上... – Kukeltje

+0

謝謝,我的想法是關於primefaces – Holger

相關問題