2013-11-20 2 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> 

и этот компонент:

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' 

Если я делаю это свойство с геттером и сеттером, то исключение больше не выбрасывается. Однако он вызывается во время загрузки страницы, не нажимая кнопку отправки. Я не могу понять всю причину.

ответ

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}"/>, который, очевидно, требует поглотитель.

Вы должны удалить весь комментарий, или обернуть его в <ui:remove> или сказать Facelets пропустить комментарии при разборе следующим параметром контекста в web.xml:

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

Я судил удалить все комментарии также, но нет удача .... На самом деле мое требование - мне нужно поместить две кнопки один для формы submit и второй для вызова одного метода действий, так же, как onclick в html – Srikanth

+0

Что именно вы имеете в виду «не повезло»? Это должно решить 'javax.servlet.ServletException: класс 'com.primefaces.sample.FileUpload' не имеет свойства 'single''. Если вы столкнулись с проблемой ** нового ** в дальнейшем, тогда вы должны задать новый вопрос для этого. – BalusC

+0

После того, как я тоже получаю такую ​​же проблему, « Srikanth

Смежные вопросы