0

これまでのところ、SOに関する明確な回答を見つけることができなかったので、これがすでに回答されている場合は、可能であればそれを教えてください。

私が持っているもの:

(HTML)

<span class="btn-group" data-toggle="buttons-radio">
    <button id="btn1" onClick="$('#theTest').val('price');" type="button" class="btn" value="price">Price</button>
    <button id="btn2" onClick="$('#theTest').val('time');" type="button" class="btn" value="time">Time</button>
    <input name="theTest" id="theTest" type="hidden" value=""/>
</span>

ボタンがクリックされると、クリックされたボタンの値、つまりの値でバッキング Bean の関数を呼び出す必要があります。#theTest

どうすればいいですか?JSFを使用しているため、javascriptから呼び出すことはできず、#{}タグはjavascriptでは機能しません。

4

1 に答える 1

1

単純な HTML 要素の代わりに、目的の HTML を生成する JSF コンポーネントを使用するだけです。

例えば

<h:outputStylesheet library="bootstrap" name="css/bootstrap.min.css" target="head" />
<h:outputScript library="bootstrap" name="js/bootstrap.min.js" target="head" />
...
<h:form>
    <span class="btn-group" data-toggle="buttons-radio">
        <h:commandButton type="button" styleClass="btn" value="Price"><f:ajax listener="#{bean.change('Price')}" /></h:commandButton>
        <h:commandButton type="button" styleClass="btn" value="Time"><f:ajax listener="#{bean.change('Time')}" /></h:commandButton>
    </span>
</h:form>

public void change(String value) {
    System.out.println(value);
}

JSF を使用すると、目的の HTML を生成するカスタム コンポーネントを作成して、次のようなより洗練されたコードを作成することもできます。

<b:radioButtons listener="#{bean.change}">
    <b:radioButton value="Price" />
    <b:radioButton value="Time" />
</b:radioButtons>

以下も参照してください。

于 2013-08-29T12:40:02.160 に答える