2016-06-02 8 views
0

На странице xhtml с Primefaces я хотел бы отобразить значок галочки с помощью значка FontAwesome (fa-check). Так как атрибут значка может быть добавлен, например, к кнопке прайвеси или в команде primefaces command, то я использую commandButton с атрибутом значка. Моя проблема в том, если я сошлюсь на него из другого элемента с F: Ajax визуализации, есть ошибка:Обновление рендеринга элемента из другого элемента в JSF

malformedXML: During update formId:tickIcon not found

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

Вот соответствующие части моей страницы Xhtml:

<h:form id="formId" enctype="multipart/form-data"> 
     <p:wizard> 
      <p:tab id="tab1"> 
      ... 
      </p:tab> 
      <p:tab id="tab2"> 
      <p:panel> 
       <p:panelGrid styleClass="ui-panelgrid-blank"> 
       <p:row> 
        <p:column colspan="2"> 
        <p:outputLabel id="wrapperLabel" value="Select a file" 
        styleClass="wrapperLabel"> 
         <h:inputFile id="fileUpload" styleClass="fileUploadButton" 
         value="#{bean.file}" required="true"> 
         <f:ajax listener="#{bean.tempUpload()}" 
         render="showFileName createButton tickIcon" /> 
         </h:inputFile> 
        </p:outputLabel> 
       </p:column> 
       <p:column colspan="1"> 
        <p:outputLabel value="Filename: " /> 
       </p:column> 
       <p:column colspan="5"> 
        <p:inputText id="showFileName" 
        value="#{bean.fileName}" readonly="true" /> 
       </p:column> 
       <p:column colspan="1"> 
        <p:commandButton id="tickIcon" icon="fa fa-check" 
        disabled="true" styleClass="tickIcon" 
        rendered="#{bean.validFile}" /> 
       </p:column> 
       </p:row> 
      </p:panelGrid> 
     </p:panel> 
     </p:tab> 
    </p:wizard> 
</h:form> 

Более бетона в часе: файл_ввод есть е: Аякс, и при загрузке файла будет сделана, он обновляет рендеринг inputText поле и 2 командных кнопки. ValidFile - это логическая переменная, и после загрузки файла это правда. Но с помощью commandButton с иконкой обновление не работает, а в другом - 2.

Если у кого-то есть лучшая идея для отображения значка Fontawesome, это также приветствуется.

UPDATE:

Это "почти" работает, если я сошлюсь на CommandButton следующим образом:: tickIcon, поэтому компонентом АЯКС я пишу это:

<f:ajax listener="#{bean.tempUpload()}" 
          render="showFileName createButton :tickIcon" /> 

Почти, потому что он работает только если я вернусь к предыдущей вкладке в мастере, а затем обратно. Сначала компоненты не обновляются.

UPDATE 2:

Он работает сейчас, я изменил код так:

<f:ajax listener="#{bean.tempUpload()}" 
          render="@form" /> 

Таким образом, вся форма обновляется.

ответ

0

Если я правильно понимаю, вам просто нужно указать столбцу id и обновить это вместо кнопки. Проблема в том, что вы не можете обновить компонент (который происходит с javascript), который не существует в DOM в первую очередь.

Обычный «трюк» заключается в том, чтобы поместить компонент в h:panelGroup и обновить его, но в вашем случае я думаю, что вы можете просто обновить p:column.

+0

Это тоже не работает. –