используя f: viewParam с обязательным атрибутом и командами

Я хочу поделиться своим опытом с использованием простых лиц, f: viewParam и p: commandButton, и задать несколько вопросов. Взгляните на эту страницу:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
  <h:head></h:head>
  <h:body>  
    <f:metadata>
      <f:viewParam required="true" name="id_file" value="#{bean.idFile}" />
    </f:metadata>
    <h:form id="tableform" prependId="false">              
      <p:commandButton actionListener="#{bean.myMethod())}" icon="ui-icon-search" title="View" />
    </h:form>
    <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />      
  </h:body>
</html>

Поддерживающий компонент имеет метод myMethod (), который ничего не делает. Когда вы входите на страницу, она ожидает параметр «id_file» и помещает его в свойство idFile компонента поддержки. Затем вы нажимаете кнопку и вызывается myMethod. Затем вы нажимаете еще раз, и вы получаете неясную ошибку проверки, и myMethod никогда не вызывается:

j_idt1: Validation Error: Value is required.j_idt1: Validation Error: Value is required.

Прежде всего, помните, что без p: сообщений вы не можете видеть это сообщение, вы должны выкопать XML, который первичные лица отправляют при вызовах ajax. Во-вторых, после 4 часов отладки я попытался изменить f: viewParam следующим образом:

<f:viewParam name="id_file" value="#{bean.idFile}" />

без «требуется»: волшебным образом все начинает работать, я могу нажать 1,2,3 и т. д., и каждый раз вызывается myMethod Итак, проблема в том, что ajax submit проверяет параметр, указанный в f: viewParam, это звучит глупо для меня, но хорошо, я могу с этим смириться.

Мои вопросы:

почему эта ошибка проверки не появляется при первом нажатии кнопки? Если вы посмотрите на ajax POST, они идентичны

предполагается, что все в порядке для проверки параметров представления (которые, по моему мнению, принадлежат представлению) при частичном вызове ajax?

есть ли способ указать простейшим лицам не проверять конкретный запрос ajax (process = "@ this" не разрешается)?

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

Ответы на вопрос(1)

Ваш ответ на вопрос