【问题标题】:Using JSF ajax on bootstrap data-toggle buttons-radio在引导数据切换按钮收音机上使用 JSF ajax
【发布时间】:2013-09-01 20:54:31
【问题描述】:

到目前为止,我还没有找到关于 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>

当一个按钮被点击时,我需要在backing bean中调用一个函数,其值是被点击按钮的值,即#theTest的值

我该怎么做?我不能从 javascript 调用它,因为我使用的是 JSF,而 #{} 标签不适用于 javascript。

【问题讨论】:

  • 只使用 JSF 组件来生成所需的 HTML 而不是普通的 HTML 元素?
  • @BalusC 我不确定要使用哪个组件。不仅如此,我不知道如何组合 JSF 组件以使它们看起来像 twitter 引导切换按钮,以及如何在不使用 javascript 的情况下触发 ajax 调用(这无论如何都会毁掉整个事情,尽我所能'不要在&lt;script&gt;&lt;/script&gt; 标签中使用#{bean.function} 调用函数。我什至找不到一个如何做到这一点的例子。

标签: html ajax jsf twitter-bootstrap radio-button


【解决方案1】:

只需使用生成所需 HTML 的 JSF 组件,而不是普通的 HTML 元素。

例如

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

另见:

【讨论】:

  • 哈哈,你打败了我!我要问3个基本上需要这个答案的问题。马上就可以使用了,谢谢!
  • 当像这样使用 标记时,没有开始标记 - 那有什么作用?
  • 它基本上添加了onclick="jsf.ajax.request(...)",从而将按钮变成了一个ajax按钮。查看删除 &lt;f:ajax&gt; 前后生成的 HTML 输出。您现在是否更深入地了解 JSF?
  • 是的,谢谢,我越来越喜欢它了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 2017-02-23
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 2017-10-13
相关资源
最近更新 更多