2017-01-31 6 views
2

У меня есть страница xhtml, с которой я вызываю метод из управляемого компонента, и он просто не работает по какой-либо причине. Я пробовал все меры, изменен на команду p: command, попробовал ajax calls , все страницы с hcommand отлично работает, пожалуйста, Im я делаю ничего плохого здесьJsf h commandbutton не работает

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

Возможная Дубликат [CommandButton метод/commandLink/Ajax действие/слушатель не вызывается или входное значение не обновляется] (http://stackoverflow.com/questions/2118656/commandbutton-commandlink-ajax-action-listener- method-not-invoked-or-input-value) – Kukeltje

ответ

2

попробовать это:

ваша форма тег должен быть как это <h:form>, потому что вы используете h:commandButton тег и ваш p:dataTable тег должен быть внутри h:form тег. Введите имя метода в EL без скобок.

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

Доверьтесь, что я попробовал это, а я просто взял его, потому что таблица не имеет ничего общего с формой, которую таблица просто отображает данные, но я просто попробовал ее снова и не работал – user3701188

+0

Можете ли вы загрузить свой полный код бэкбона, содержащий методы? – ArgaPK

+0

у вас не было h: form tag, вы заменили

на ?? – ArgaPK