2012-06-16 24 views
0

如果託管bean中有條件,我有。條件爲真時,我想顯示警報。我如何做到這一點?類似於:如何從託管bean調用javascript函數?

public void catInsert() 
     { 
      if(abr.searchCategoryByCategoryName(CategoryName)!=null){ 
    //    msg = "<div style = 'color:red'>CategoryName already exist!</div>"; 
    //    System.out.println(msg); 
// i want alert here 

      }else 
      { 
      abr.addCategory(CategoryName); 
      CategoryName=""; 
      } 
     } 

和xhtml頁面是;

<table class="nostyle"> 
       <tr> 
        <td align="right"> 
        <h:outputText value="Category Name:"></h:outputText> 
        </td> 
        <td> 
         <h:inputText id="txtcatname" value="#{categoryBean.categoryName}" required="true" requiredMessage="Enter category Name" > 
         </h:inputText> 
        </td> 
        <td ><h:message for="txtcatname" style="color: #df0000"></h:message></td>>    
       </tr> 
       <tr> 
        <td></td> 
        <td align="left"> 
         <h:commandButton id="submit" type="Submit" value="submit" action="#{categoryBean.catInsert()}" > 
         </h:commandButton> 
        </td> 

       </tr> 
      </table> 
+0

這有什麼問題?你的實際狀況在哪裏? – Sarfraz

+0

客戶必須不斷跟豆找出 – jcolebrand

+0

我已更新問題。請給我解決方案 – user1450369

回答

2

你犯了一個概念錯誤。 HTML/JS代碼不屬於控制器,但在視圖中。控制器必須以某種方式通知視圖必須生成所需的一組HTML/JS代碼。

你可以做到這一點通過設置布爾值屬性,像這樣

private boolean showCategoryNameAlert; 

public void catInsert() { 
    if (abr.searchCategoryByCategoryName(categoryName) != null) { 
     showCategoryNameAlert = true; 
    } else { 
     abr.addCategory(categoryName); 
    } 
} 

public boolean isShowCategoryNameAlert() { 
    return showCategoryNameAlert; 
} 

<h:outputScript rendered="#{categoryBean.showCategoryNameAlert}"> 
    alert("CategoryName already exist!"); 
</h:outputScript> 

順便說一句,你爲什麼不使用FacesContext#addMessage()<h:messages>或者甚至一個正常的JSF Validator在輸入字段?顯示JavaScript警報是soo 90,並且在動作方法中執行輸入驗證是糟糕的設計。

相關問題