1

マウスがインターフェイスの特定の要素の上に移動したときに、JSF アプリケーションで簡単なメッセージを表示するにはどうすればよいですか? このコードを試しましたが、うまくいきませんでした。メッセージは表示されません:

JSF ファイル:

<h:form id ="f">
<h:selectManyCheckbox onmouseover="#{hello.message()}" layout="pageDirection" border="1"  value="#{hello.customersSelect}">
    <f:selectItems value="#{hello.customers}"></f:selectItems>
</h:selectManyCheckbox><br />
<h:commandButton action="response.xhtml" value="Click me" />
</h:form>

バッキング Bean Hello (ManagedBean) には、メソッド message() が次のように含まれています。

public void message(){
    FacesContext.getCurrentInstance().addMessage("f", new FacesMessage("Done"));
}

h:message というタグをどこかに追加する必要があると思いますが、努力しても実行できませんでした。ヒントはありますか?

4

3 に答える 3

1

mouseOver は dom イベントであるため、javascript で処理する必要があります。

<h:head>    
<h:outputScript library="js" name="rollover.js" />
[...]
<h:form id ="f">
<h:selectManyCheckbox onmouseover="mouseOn('foobar')" layout="pageDirection" border="1"  value="#{hello.customersSelect}">

および rollover.js :

function mouseOn(text) {
   alert(text)
}
于 2013-03-06T15:29:09.713 に答える
1

好奇心を満足させるには、次を使用します<f:ajax event="mouseover" listener="#{hello.messageListener}" />

JSF コード

<h:selectManyCheckbox layout="pageDirection" border="1"
    value="#{hello.customersSelect}">
    <f:selectItems value="#{hello.customers}"></f:selectItems>

    <f:ajax event="mouseover" listener="#{hello.messageListener}" render="messages" />
</h:selectManyCheckbox>
<br />
<h:messages id="messages" />

ハロービーンコード

@ManagedBean
@ViewScoped
public class Hello {
    //attributes, constructor and other methods

    public void messageListener(AjaxBehaviorEvent event) { 
        System.out.println("OnMouseOver ajax event.");
        FacesContext.getCurrentInstance().addMessage(
            null, new FacesMessage("Done"));
    }
}

しかし、もっと重要なことは、これがあなたの本当の問題に対する解決策であると確信していますか? より良いヘルプを得るには、機能要件を指定する方がよいでしょう。

于 2013-03-06T15:32:26.083 に答える
0

ページが表示されている間は変更されない、静的なメッセージを表示したいだけの場合:

<h:form>
    <h:selectManyCheckbox title="#{hello.message}" layout="pageDirection"
        border="1" value="#{hello.customersSelect}">
        <f:selectItems value="#{hello.customers}"></f:selectItems>
    </h:selectManyCheckbox><br />
    <h:commandButton action="response.xhtml" value="Click me" />
</h:form>

そして豆:

public String getMessage() {
    return "Done";
}

JavaScript はまったくありません ;-)

于 2013-03-06T15:44:21.283 に答える