0

マネージド Bean に if 条件があります。条件が真のときにアラートを表示したい。どうやってそれをするのですか?何かのようなもの:

    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>
4

1 に答える 1

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>

ところで、入力フィールドで通常の JSFを使用FacesContext#addMessage()しないのはなぜですか? JavaScript アラートを表示するのは 90 年代で、アクション メソッドで入力検証を実行するのは設計が不適切です。<h:messages>Validator

于 2012-06-16T13:32:19.907 に答える