Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 p:commandButton在页面中不调用bean的方法_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Jsf p:commandButton在页面中不调用bean的方法

Jsf p:commandButton在页面中不调用bean的方法,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,当我动态包含一个页面时,我遇到了一个问题,与组件关联的action和actionlistener没有被调用。 我已尝试从包含的页面中删除标记,但问题仍然存在。如何解决此问题 源代码: hello.xhtml主页 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

当我动态包含一个页面时,我遇到了一个问题,与组件关联的action和actionlistener没有被调用。 我已尝试从包含的页面中删除标记,但问题仍然存在。如何解决此问题

源代码:

hello.xhtml主页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<f:view>    
<h:head>
    <link rel="stylesheet" type="text/css" href="stylesheet.css" />    
    <f:view contentType="text/html" />
</h:head>
<h:body>
    <h:form id="helloForm">
        <p:growl id="messages" />
        <p:panelGrid id="panelGridPrincipal" styleClass="panelGridPrincipal">
            <p:row>
                <p:column colspan="2">
                    <div style="width: 100%; height: 25px; padding-left: 230px;">
                        <p:commandButton id="botao1" value="Bookmark" styleClass="button"/>
                        <p:commandButton id="botao2" value="Bookmark2" styleClass="button"
                            actionListener="#{mainBean.renderMenuVendas}" update="panel" >
                            <f:setPropertyActionListener value="2" target="#{mainBean.menuType}" />  
                        </p:commandButton>
                    </div>
                </p:column>
            </p:row>
            <p:row>
                <p:column id="column2" style="width:200px;background-color: #5A5858;">
                    <h:panelGrid id="panel" styleClass="panelGridMenu" columns="1">
                        <p:menu id="dynamicMenu" model="#{mainBean.sideMenu}" rendered="#{mainBean.showMenuVendas}" style="width:189px;margin-right:100%;"/>
                        <p:spacer width="50px" height="700px" />
                    </h:panelGrid>
                </p:column>
                    <p:column style="background-color: white">
                        <p:panelGrid style="border:1px;">
                            <p:row>
                                <p:column>
                                    <p:outputPanel id="outputPanelConteudo">
                                        <ui:include src="#{mainBean.paginaAtual}" />
                                    </p:outputPanel>
                                </p:column>
                            </p:row>
                            <p:row/>
                        </p:panelGrid>
                    </p:column>
                </p:row>
        </p:panelGrid>
    </h:form>
</h:body>
</f:view>
</html>
pagina1.xhtml包含页面

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    <p:dataTable id="avioes" var="aviao" value="#{listaAvioesBean.aviao}"
        rowKey="#{aviao.numeroSerie}"
        selection="#{listaAvioesBean.selectedAviao}" selectionMode="single"
        style="width:500px">

        <p:column style="width:75px">
            <f:facet name="header">
                <h:outputText value="Numero de Serie" />
            </f:facet>
            <h:outputText value="#{aviao.numeroSerie}" />
        </p:column>

        <p:column style="width:100px">
            <f:facet name="header">
                <h:outputText value="Marca" />
            </f:facet>
            <h:outputText value="#{aviao.marca}" />
        </p:column>

        <p:column style="width:75px">
            <f:facet name="header">
                <h:outputText value="Modelo" />
            </f:facet>
            <h:outputText value="#{aviao.modelo}" />
        </p:column>

        <p:column style="width:75px">
            <p:commandButton id="insertAviao" value="Inserir" title="Visualizar">
                <f:setPropertyActionListener value="#{aviao}"
                    target="#{listaAvioesBean.selectedAviao}" />
            </p:commandButton>
                 <!--THESE ACTION DOESN'T CALL THE BEAN METHOD!!!  -->
                <p:commandButton id="removerAviao" style="width:50px" value="P"
                    title="Deletar" action="#{listaAvioesBean.removerAviao}"
                    update=":helloForm:outputPanelConteudo">
                    <f:setPropertyActionListener value="#{aviao}"
                        target="#{listaAvioesBean.selectedAviao}" />
                </p:commandButton>
        </p:column>
    </p:dataTable>
</ui:composition>
托管bean listaaviesbean.java


如果有嵌套表单,请删除pagina1内部的内部表单。清理并生成项目,重新启动应用程序服务器,然后重试。您好!谢谢你的回复。我刚刚删除了,但是问题仍然存在。还有其他想法吗?你确定它没有执行支持bean吗?看起来您正试图通过ajax旋转渲染属性,而且,好吧,这不会给您想要的结果。我在尝试openfaces和菜单设置时遇到了类似的问题。相反,您可能希望通过javascript旋转显示属性,或者重新处理菜单id=panel.Hello的隐藏/显示特性!我已经解决了这个问题!实际上,我已经放弃了包含页面,现在我使用托管bean中的变量在选择菜单项时呈现特定的代码片段。我认为这是一个类似于你的解决方案。无论如何谢谢你!!如果有嵌套表单,请删除pagina1内部的内部表单。清理并生成项目,重新启动应用程序服务器,然后重试。您好!谢谢你的回复。我刚刚删除了,但是问题仍然存在。还有其他想法吗?你确定它没有执行支持bean吗?看起来您正试图通过ajax旋转渲染属性,而且,好吧,这不会给您想要的结果。我在尝试openfaces和菜单设置时遇到了类似的问题。相反,您可能希望通过javascript旋转显示属性,或者重新处理菜单id=panel.Hello的隐藏/显示特性!我已经解决了这个问题!实际上,我已经放弃了包含页面,现在我使用托管bean中的变量在选择菜单项时呈现特定的代码片段。我认为这是一个类似于你的解决方案。无论如何谢谢你!!
package br.com.erp.beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

import br.com.erp.object.Aviao;

@ManagedBean(name="listaAvioesBean")
@ViewScoped
public class ListaAvioesBean implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 8076960891132613195L;
    private Aviao selectedAviao;
    private List<Aviao> aviao;

    public ListaAvioesBean(){

        aviao = new ArrayList<Aviao>();
        System.out.println("ListaAvioesBean Criado!");

    }

    @PostConstruct
    public void init(){

        System.out.println("Iniciando o bean!");
        populateListAvioes();   
    }

    public void executa(){

        System.out.println("Executou");

    }


    private void populateListAvioes(){

        Aviao av1 = new Aviao();
        av1.setMarca("Marca1");
        av1.setModelo("M1");
        av1.setNumeroSerie("1234");
        aviao.add(av1);
        av1 = new Aviao();
        av1.setMarca("Marca2");
        av1.setModelo("M2");
        av1.setNumeroSerie("1111");
        aviao.add(av1);
        av1 = new Aviao();
        av1.setMarca("Marca3");
        av1.setModelo("M3");
        av1.setNumeroSerie("4321");
        aviao.add(av1);

    }

    public Aviao getSelectedAviao() {
        return selectedAviao;
    }

    public void setSelectedAviao(Aviao selectedAviao) {
        this.selectedAviao = selectedAviao;
    }

    public List<Aviao> getAviao() {
        return aviao;
    }

    public void setAviao(List<Aviao> aviao) {
        this.aviao = aviao;
    }


    public void removerAviao(){

        boolean removeu = aviao.remove(selectedAviao);

        if(removeu)
            System.out.println("Avião removido com sucesso");

    }

    public void executa(ActionEvent e){

        System.out.println();

    }


}