2017-01-31 3 views
2

Ich habe eine XHTML-Seite, die ich eine Methode von einer verwalteten Bean aus aufrufen und es scheint einfach nicht funktionieren aus irgendeinem Grund.Ich habe alle Maßnahmen versucht, geändert, p: Befehl, versuchte Ajax Anrufe . alle Seite mit hcommand gut funktioniert, Im bitteJsf h commandbutton funktioniert nicht

<?xml version="1.0" encoding="ISO-8859-1" ?> 

<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:p="http://primefaces.org/ui"> 
<f:metadata> 
    <f:event type="preRenderView" listener="#{hibernateController.getAllWebSites()}"/> 
    <f:event type="preRenderView" listener="#{hibernateController.getAllScores()}"/> 
</f:metadata> 
<h:head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

    <title>Mood Watch</title> 
    <h:outputStylesheet library="css" name="style.css" /> 
</h:head> 

<h:body> 
    <div id="wrapper"> 
    <div id="header"> 
     <h2>Mood Watch</h2> 
    </div> 
    </div> 

    <form> 
     <p:outputLabel>Filter : </p:outputLabel> 
     <p:selectOneMenu id="whySelect1" value="#{hibernateController.siteFromMood}"> 
       <f:selectItems value="#{hibernateController.mySites}" var="tempSites" itemLabel="#{tempSites.site}" itemValue="#{tempSites.moodSite}" /> 
      </p:selectOneMenu> 

      <h:commandButton value="Filter" action="#{hibernateController.filterSites()}"/> 

      <h:commandButton value="View All" action="#{hibernateController.setSitMoodToNull()}"/> 

    </form> 

    <p:dataTable id="moodTable" var="moodValues" value="#{hibernateController.myFrontEndModels}"> 
     <p:column headerText="Date"> 
      <h:outputText value="#{moodValues.dateCreated}" /> 
     </p:column> 

     <p:column headerText="Site"> 
      <h:outputText value="#{moodValues.sitename}" /> 
     </p:column> 

     <p:column headerText="Value"> 
      <h:outputText value="#{moodValues.moodValue}" /> 
     </p:column> 

    </p:dataTable> 



</h:body> 

public void setSitMoodToNull() { 
    siteFromMood = null; 
    System.out.println("This is setSiteFromMood to null :" + siteFromMood); 
} 


public void filterSites(){ 
    System.out.println("Show me specifics"); 

} 
+0

Mögliches Duplikat [command/command/Ajax-Aktion/Listener-Methode nicht aufgerufen oder Eingabewert nicht aktualisiert] (http://stackoverflow.com/questions/2118656/commandbutton-commandlink-ajax-action-listener- method-not-invoked-or-input-value) – Kukeltje

Antwort

2

versuchen, dies hier falsch ich etwas zu tun:

Ihre Form Tag sein sollte dies <h:form>, weil SieverwendenTag und Ihr p:dataTable Tag sollte innerhalb h:form Tag sein. Schreiben Sie den Methodennamen in EL ohne Klammern.

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:p="http://primefaces.org/ui"> 
<f:metadata> 
    <f:event type="preRenderView" listener="#{hibernateController.getAllWebSites()}"/> 
    <f:event type="preRenderView" listener="#{hibernateController.getAllScores()}"/> 
</f:metadata> 
<h:head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

    <title>Mood Watch</title> 
    <h:outputStylesheet library="css" name="style.css" /> 
</h:head> 

<h:body> 
    <div id="wrapper"> 
    <div id="header"> 
     <h2>Mood Watch</h2> 
    </div> 
    </div> 

    <h:form> 
     <p:outputLabel>Filter : </p:outputLabel> 
     <p:selectOneMenu id="whySelect1" value="#{hibernateController.siteFromMood}"> 
       <f:selectItems value="#{hibernateController.mySites}" var="tempSites" itemLabel="#{tempSites.site}" itemValue="#{tempSites.moodSite}" /> 
      </p:selectOneMenu> 
<h:commandButton value="Filter" actionListener="#{hibernateController.filterSites}"/> 

       <h:commandButton value="View All" actionListener="#{hibernateController.setSitMoodToNull}"/> 



    <p:dataTable id="moodTable" var="moodValues" value="#{hibernateController.myFrontEndModels}"> 
     <p:column headerText="Date"> 
      <h:outputText value="#{moodValues.dateCreated}" /> 
     </p:column> 

     <p:column headerText="Site"> 
      <h:outputText value="#{moodValues.sitename}" /> 
     </p:column> 

     <p:column headerText="Value"> 
      <h:outputText value="#{moodValues.moodValue}" /> 
     </p:column> 

    </p:dataTable> 


</h:form> 
</h:body> 
+0

Vertrauen Ich habe das auch ausprobiert, ich habe es einfach herausgenommen, weil die Tabelle nichts mit der Form zu tun hat, die die Tabelle nur Daten rendert, aber ich habe es gerade noch einmal versucht und nicht funktioniert – user3701188

+0

Können Sie Ihren vollständigen Backing-Bean-Code hochladen, der die Methoden enthält? – ArgaPK

+0

Sie hatten kein h: form-Tag, haben Sie

durch ersetzt ?? – ArgaPK

Verwandte Themen