Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf PrimeFaces splitButton:immediate=";“真的”;似乎不起作用_Jsf_Primefaces - Fatal编程技术网

Jsf PrimeFaces splitButton:immediate=";“真的”;似乎不起作用

Jsf PrimeFaces splitButton:immediate=";“真的”;似乎不起作用,jsf,primefaces,Jsf,Primefaces,旁注:它与命令按钮一起工作 我所拥有的: <p:splitButton immediate="true"> <h:form> <p:growl id="growl" sticky="false" life="3500" showDetail="false"/> <h:panelGrid id="customer_grid" columns="2" cellspacing="1" cellpadding="5"> <h:outpu

旁注:它与命令按钮一起工作

我所拥有的:

<p:splitButton immediate="true">
<h:form>
<p:growl id="growl" sticky="false" life="3500" showDetail="false"/>

<h:panelGrid id="customer_grid" columns="2" cellspacing="1" cellpadding="5">

    <h:outputLabel id="label" for="name" value="Kunde:" style="font-weight:bold"/>             
    <p:inputText id="name" value="#{customerController.customer.name}" required="true" requiredMessage="Name eingeben!"/>

    <h:outputLabel for="address" value="Adresse:" style="font-weight: bold" />
    <p:inputText id="address" value ="#{customerController.customer.address}" required="true" requiredMessage="Adresse eingeben!"/>

    <p:commandButton  action = "#{customerController.createCustomer}" value="Speichern" style="margin-right:10px" 
                      actionListener="#{growlController.saveMessage}" ajax="true" 
                      onclick="PF('blockUIWidget').block()" oncomplete="PF('blockUIWidget').unblock()" styleClass="save-button"/>

    <p:commandButton onclick="history.back(); return false;" value="Abbrechen" ajax="true"/>

    <pe:blockUI widgetVar="blockUIWidget">
        <h:panelGrid columns="2">
            <p:graphicImage id="loader" name="images/ajax-loader.gif" style="margin-right: 12px; vertical-align: middle;" rendered="true"/>
            <h:outputText value="Please wait..." style="white-space: nowrap;"/>
        </h:panelGrid>
    </pe:blockUI>
</h:panelGrid>

<br/>
<br/>

<p:dataTable var="customer" value="#{customerController.allCustomers}" resizableColumns="true" tableStyle="width: auto"
             rendered="#{not empty customerController.allCustomers}">

    <p:column headerText="customer" style="width: 300px">
        <h:outputText value="#{customer.name}" />
    </p:column>

    <p:column>
        <p:splitButton value="current order" action="#{userController.setup(customer, 'lastOrder')}" immediate="true">
            <p:menuitem value="old orders" action="#{userController.setup(customer, 'oldOrders')}" immediate="true"/>
            <p:menuitem value="edit" action="#{userController.setup(customer, 'update')}" immediate="true"/>
        </p:splitButton>
    </p:column>

</p:dataTable>
输入客户姓名和地址的简单表单。在下面的数据表中,每行(在工作版本中)包含以下字段:

  • 客户姓名
  • 一个命令按钮,重定向到另一个页面并显示客户订单(使用
  • 另一个显示过去订单的命令按钮
  • 另一个命令按钮,负责更新客户数据
因为我不想每行有三个命令按钮,所以我决定使用拆分按钮

问题:

<p:splitButton immediate="true">
<h:form>
<p:growl id="growl" sticky="false" life="3500" showDetail="false"/>

<h:panelGrid id="customer_grid" columns="2" cellspacing="1" cellpadding="5">

    <h:outputLabel id="label" for="name" value="Kunde:" style="font-weight:bold"/>             
    <p:inputText id="name" value="#{customerController.customer.name}" required="true" requiredMessage="Name eingeben!"/>

    <h:outputLabel for="address" value="Adresse:" style="font-weight: bold" />
    <p:inputText id="address" value ="#{customerController.customer.address}" required="true" requiredMessage="Adresse eingeben!"/>

    <p:commandButton  action = "#{customerController.createCustomer}" value="Speichern" style="margin-right:10px" 
                      actionListener="#{growlController.saveMessage}" ajax="true" 
                      onclick="PF('blockUIWidget').block()" oncomplete="PF('blockUIWidget').unblock()" styleClass="save-button"/>

    <p:commandButton onclick="history.back(); return false;" value="Abbrechen" ajax="true"/>

    <pe:blockUI widgetVar="blockUIWidget">
        <h:panelGrid columns="2">
            <p:graphicImage id="loader" name="images/ajax-loader.gif" style="margin-right: 12px; vertical-align: middle;" rendered="true"/>
            <h:outputText value="Please wait..." style="white-space: nowrap;"/>
        </h:panelGrid>
    </pe:blockUI>
</h:panelGrid>

<br/>
<br/>

<p:dataTable var="customer" value="#{customerController.allCustomers}" resizableColumns="true" tableStyle="width: auto"
             rendered="#{not empty customerController.allCustomers}">

    <p:column headerText="customer" style="width: 300px">
        <h:outputText value="#{customer.name}" />
    </p:column>

    <p:column>
        <p:splitButton value="current order" action="#{userController.setup(customer, 'lastOrder')}" immediate="true">
            <p:menuitem value="old orders" action="#{userController.setup(customer, 'oldOrders')}" immediate="true"/>
            <p:menuitem value="edit" action="#{userController.setup(customer, 'update')}" immediate="true"/>
        </p:splitButton>
    </p:column>

</p:dataTable>

编辑:

<p:splitButton immediate="true">
<h:form>
<p:growl id="growl" sticky="false" life="3500" showDetail="false"/>

<h:panelGrid id="customer_grid" columns="2" cellspacing="1" cellpadding="5">

    <h:outputLabel id="label" for="name" value="Kunde:" style="font-weight:bold"/>             
    <p:inputText id="name" value="#{customerController.customer.name}" required="true" requiredMessage="Name eingeben!"/>

    <h:outputLabel for="address" value="Adresse:" style="font-weight: bold" />
    <p:inputText id="address" value ="#{customerController.customer.address}" required="true" requiredMessage="Adresse eingeben!"/>

    <p:commandButton  action = "#{customerController.createCustomer}" value="Speichern" style="margin-right:10px" 
                      actionListener="#{growlController.saveMessage}" ajax="true" 
                      onclick="PF('blockUIWidget').block()" oncomplete="PF('blockUIWidget').unblock()" styleClass="save-button"/>

    <p:commandButton onclick="history.back(); return false;" value="Abbrechen" ajax="true"/>

    <pe:blockUI widgetVar="blockUIWidget">
        <h:panelGrid columns="2">
            <p:graphicImage id="loader" name="images/ajax-loader.gif" style="margin-right: 12px; vertical-align: middle;" rendered="true"/>
            <h:outputText value="Please wait..." style="white-space: nowrap;"/>
        </h:panelGrid>
    </pe:blockUI>
</h:panelGrid>

<br/>
<br/>

<p:dataTable var="customer" value="#{customerController.allCustomers}" resizableColumns="true" tableStyle="width: auto"
             rendered="#{not empty customerController.allCustomers}">

    <p:column headerText="customer" style="width: 300px">
        <h:outputText value="#{customer.name}" />
    </p:column>

    <p:column>
        <p:splitButton value="current order" action="#{userController.setup(customer, 'lastOrder')}" immediate="true">
            <p:menuitem value="old orders" action="#{userController.setup(customer, 'oldOrders')}" immediate="true"/>
            <p:menuitem value="edit" action="#{userController.setup(customer, 'update')}" immediate="true"/>
        </p:splitButton>
    </p:column>

</p:dataTable>
根据巴卢斯的评论,我将这两部分分别放在了不同的表格中。 效果:填写上述表单的消息不会显示,但重定向也不会发生

EDIT2:

<p:splitButton immediate="true">
<h:form>
<p:growl id="growl" sticky="false" life="3500" showDetail="false"/>

<h:panelGrid id="customer_grid" columns="2" cellspacing="1" cellpadding="5">

    <h:outputLabel id="label" for="name" value="Kunde:" style="font-weight:bold"/>             
    <p:inputText id="name" value="#{customerController.customer.name}" required="true" requiredMessage="Name eingeben!"/>

    <h:outputLabel for="address" value="Adresse:" style="font-weight: bold" />
    <p:inputText id="address" value ="#{customerController.customer.address}" required="true" requiredMessage="Adresse eingeben!"/>

    <p:commandButton  action = "#{customerController.createCustomer}" value="Speichern" style="margin-right:10px" 
                      actionListener="#{growlController.saveMessage}" ajax="true" 
                      onclick="PF('blockUIWidget').block()" oncomplete="PF('blockUIWidget').unblock()" styleClass="save-button"/>

    <p:commandButton onclick="history.back(); return false;" value="Abbrechen" ajax="true"/>

    <pe:blockUI widgetVar="blockUIWidget">
        <h:panelGrid columns="2">
            <p:graphicImage id="loader" name="images/ajax-loader.gif" style="margin-right: 12px; vertical-align: middle;" rendered="true"/>
            <h:outputText value="Please wait..." style="white-space: nowrap;"/>
        </h:panelGrid>
    </pe:blockUI>
</h:panelGrid>

<br/>
<br/>

<p:dataTable var="customer" value="#{customerController.allCustomers}" resizableColumns="true" tableStyle="width: auto"
             rendered="#{not empty customerController.allCustomers}">

    <p:column headerText="customer" style="width: 300px">
        <h:outputText value="#{customer.name}" />
    </p:column>

    <p:column>
        <p:splitButton value="current order" action="#{userController.setup(customer, 'lastOrder')}" immediate="true">
            <p:menuitem value="old orders" action="#{userController.setup(customer, 'oldOrders')}" immediate="true"/>
            <p:menuitem value="edit" action="#{userController.setup(customer, 'update')}" immediate="true"/>
        </p:splitButton>
    </p:column>

</p:dataTable>
方法
userController.setup(customer,'String')
的目的基本上是注入代表每行的客户。返回该字符串是为了重定向,这是在faces-config.xml中设置的,正如我所说的:当我改用命令按钮时,它会工作

代码:

@Named
@会议范围
公共类UserController实现可序列化{
@注入
私人客户;
@EJB
私人客户服务;
公共用户控制器(){
}
公共列表getItems(){
返回customerService.getItems(客户);
}
公共订单getCurrentOrder(){
返回customerService.getCurrentOrder(客户);
}
公共客户getCustomer(){
退货客户;
}
公共作废设置客户(客户){
this.customer=customer;
}
公共CustomerService getCustomerService(){
返回客户服务;
}
公共无效设置CustomerService(CustomerService CustomerService){
this.customerService=customerService;
}
公共字符串设置(客户、字符串导航){
this.customer=customer;
返回导航;
}
公共无效更新(){
customerService.update(客户);
}
}

为什么要在同一个
中放置不同的表单?此外,由于ajax支持,在JSF2.x中不再需要使用
immediate=“true”
,这使您能够只处理表单的一个特定部分。1.)因为我是一个不折不扣的傻瓜。2)我刚刚把它分为两种形式。现在,字段为必填字段的消息没有显示,但重定向没有发生。请输入
setup
方法的代码,我们将能够更好地帮助您。