如果INSERT操作成功,JSF以模态显示文本

时间:2016-11-18 04:41:32

标签: ajax twitter-bootstrap jsf jsf-2

从托管bean中的方法返回值的正确方法是什么,表示成功SQL DML操作,例如INSERTUPDATE

根据我在线阅读的教程和一些博客,它说从ManagedBean中包含的方法返回值的一个好方法是String的{​​{1}}值或facelet页面 (换句话说,视图)重定向到网页。

喜欢这个。

原始版本:

.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; } ,根据intJSF 的合作方式,我认为这是不正确的(请更正我)如果我错了)

我问道,因为我说 Twitter Bootstrap ManagedBean有以下内容。

modal

我需要能够在<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> modal内显示div执行成功。

实现这一目标的最简单,最正确的方法是什么?

我读到register()会有所帮助,但我现在对AJAX知之甚少,所以对此可能有一个简单的解决办法。

我很感激任何帮助。

谢谢。

1 个答案:

答案 0 :(得分: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>