usando f: viewParam con atributos y comandos requeridos

Quiero compartir mi experiencia usando primefaces, f: viewParam and p: commandButton, y hacer algunas preguntas. Eche un vistazo a esta página:

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

El bean de respaldo tiene un método "myMethod ()" que no hace nada. Cuando ingresa a la página, espera el parámetro "id_file" y lo coloca en la propiedad idFile del bean de respaldo. Luego haces clic en el botón y se llama el myMethod. Luego vuelve a hacer clic y aparece un error de validación oscuro y nunca se llama a myMethod:

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

En primer lugar, recuerde que sin los mensajes p: no puede ver este mensaje, debe excavar el XML que las interfaces de referencia envían en las llamadas ajax. En segundo lugar, después de 4 horas de depuración, he intentado cambiar el f: viewParam de esta manera:

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

sin "requerido": mágicamente todo empieza a funcionar, puedo hacer clic en 1,2,3, etc. y se llama a myMethod cada vez. Entonces, el problema es que el envío ajax valida el parámetro especificado con f: viewParam, me parece una tontería, pero está bien, puedo vivir con él.

Mis preguntas son:

¿Por qué este error de validación no aparece la primera vez que se hace clic en el botón? Si nos fijamos en los POST de ajax son idénticos.

¿Se supone que está bien validar los parámetros de vista (que, en mi idea, pertenecen a la vista) en una llamada ajax parcial?

¿hay una manera de decirle a primefaces que no valide en una solicitud ajax en particular (proceso = "@ esto" no se resuelve)?

¡Gracias, espero que mi experiencia le permita evitar pasar horas haciendo depuración!

Respuestas a la pregunta(1)

Su respuesta a la pregunta