2013-11-20 33 views
2

调用我有这样的形式:操作方法,无需按下提交按钮

<h:form id="testForm"> 
    <p:fieldset legend="data"> 
     <p:dataTable id="fileData" var="dataList" value="#{fileUpload.displayData}"> 
      <p:column headerText="Htno"> 
       <h:outputText value="#{dataList.htno}" /> 
      </p:column> 

      <p:column headerText="Ecode"> 
       <h:outputText value="#{dataList.ecode}" /> 
      </p:column> 

      <p:column headerText="Subcode"> 
       <h:outputText value="#{dataList.subcode}" /> 
      </p:column> 

      <p:column headerText="Imf"> 
       <h:outputText value="#{dataList.imf}" /> 
      </p:column> 

      <p:column headerText="Action"> 
      <!-- <h:commandLink value="Upload" action="#{fileUpload.single}" rendered="true" > 
       <f:param name="imf" value="#{dataList.imf}" /> 
       <h:inputHidden value="#{fileUpload.imf}" id="imf" /> 
      </h:commandLink> --> 
      <h:commandButton image="delete" ajax="false" style="margin-right:20px;" action="#{fileUpload.single}" ></h:commandButton> 
      </p:column> 
     </p:dataTable> 
     <h:inputHidden value="#{fileUpload.uploadFileName}" id="uploadFileName" /> 
     <h:inputHidden value="#{fileUpload.dirPath}" id="dirPath" /> 
     <h:commandButton type="submit" value="Upload All" action="#{fileUpload.uploadAll}"></h:commandButton> 
    </p:fieldset> 
</h:form> 

和这个bean:

public class FileUpload { 

    public String single() { 
     System.out.println("-----------**---d---"); 
     return "home"; 
    } 
} 

这是造成这个异常:

javax.servlet.ServletException: The class 'com.primefaces.sample.FileUpload' does not have the property 'single' 

如果我让一个拥有getter和setter的属性,那么异常不会再被抛出。然而,它在页面加载期间被调用,无需按下提交按钮。我终身无法找出原因。

回答

1

你的问题在这里引起的:

<!-- <h:commandLink value="Upload" action="#{fileUpload.single}" rendered="true" > 
    <f:param name="imf" value="#{dataList.imf}" /> 
    <h:inputHidden value="#{fileUpload.imf}" id="imf" /> 
</h:commandLink> --> 

HTML注释解释为模板文本。他们还需要在生成的HTML输出中结束。 HTML注释不会停止评估EL表达式。这是完全一样的,如果你正在做的:

<p>Blah blah #{fileUpload.single} blah blah</p> 

这被解释为<h:outputText value="#{fileUpload.single}"/>这显然需要一个getter。

您需要web.xml通过以下上下文参数解析过程中删除整个评论,或者把它包在<ui:remove>,或者告诉Facelets的跳过注释:

<context-param> 
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> 
    <param-value>true</param-value> 
</context-param> 
+0

我试图通过删除所有评论也,但没有运气....其实我的要求是我需要把两个按钮之一的形式提交和第二个调用一个动作的方法,就像在html中的onclick – Srikanth

+0

你是什么意思与“没有运气”?这应该解决'javax.servlet.ServletException:类'com.primefaces.sample.FileUpload'没有属性'single''问题。如果您以后遇到**新问题,那么您应该为此提出一个新问题。 – BalusC

+0

没有后,我得到同样的问题,“ Srikanth