选择一个组件并显示 - Ajax

时间:2011-08-07 09:09:44

标签: ajax jsf primefaces

我需要输出selectOneMenu - 列表中选择的文本。我的代码如下;

<h:selectOneMenu value="#{DataForm.stationed}" id="globalFilter" onchange="carsTable.filter()" style="width:350px;font-size:13px;"  >
    <f:selectItems value="#{DataForm.listHotel}" var="user" itemValue="#{user[1]}" itemDisabled="false" itemLabel="#{user[1]}" />
    <h:outputText value="#{carsTable[1]}" style="width:350px"/>
</h:selectOneMenu>

我该如何编码?

修改

此列表框位于<datatable>

之内
<h:body>
    <h:form id="form1" >
        <p:dataTable var="car" value="#{DataForm.listHotels}" widgetVar="carsTable" paginator="true" rows="10" onRowSelectComplete="carDialog.show()" emptyMessage="No hospital found with given criteria" selectionMode="single" onRowSelectUpdate="growl" style="width:1400px;font-size:13px;">

            <h:selectOneMenu value="#{DataForm.stationed}" id="globalFilter" onchange="carsTable.filter()" style="width:350px;font-size:13px;"  >
                <f:selectItems value="#{DataForm.listHotel}" var="user" itemValue="#{user[1]}" itemDisabled="false" itemLabel="#{user[1]}" />
                <h:outputText value="#{carsTable[1]}" style="width:350px"/>
            </h:selectOneMenu>

        </p:dataTable>

        <f:ajax render= "@form1" >
            <h:selectOneMenu value="#{DataForm.stationed}">
                <f:selectItems value="#{DataForm.listHotels}" var="item" itemValue="#{DataForm.listHotels}" itemLabel="#{DataForm.listHotels}" />
            </h:selectOneMenu>
        </f:ajax>
    </h:form>
</h:body>

1 个答案:

答案 0 :(得分:0)

我认为你应该首先删除嵌套的<h:outputText/>,它在那个位置上没有意义。另外,根据您的问题和示例代码,PrimeFaces与它有什么关系并不是很清楚。

要输出所选值,只需打印表达式#{DataForm.stationed},因为这是将接收所选值的绑定。

以下示例通过AJAX演示了这一点,但如果您使用了操作和常规表单提交,它将以相同的方式工作。

<强>的facelet

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
    <h:head />

    <h:body>

        <h:form id="form">

            <f:ajax render="form">
                <h:selectOneMenu value="#{selectOneMenuBean.value}">
                    <f:selectItems value="#{selectOneMenuBean.items}" var="item" itemValue="#{item}" itemLabel="#{item}" />
                </h:selectOneMenu>
            </f:ajax>

            Selected value: #{selectOneMenuBean.value}

        </h:form>

    </h:body>
</html>

<强>豆

@ViewScoped
@ManagedBean
public class SelectOneMenuBean {

    private List<String> items = Arrays.asList("a", "b", "c");
    private String value;

    public List<String> getItems() {
        return items;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}

P.S。 在您的代码示例中,bean的EL名称以大写字母开头。这与典型的惯例有点不同。此外,您可能需要注意您的姓名和类型。 bean返回一个名为listHotel的东西,但这被分配给一个名为user的变量,然后由一个整数索引。我建议您对齐名称(例如,集合名称= users,变量名称user)并使用属性而不是索引(例如user.name)。