para - templates jsf primefaces
Encontrar la causa de: "El componente del formulario necesita tener un UIForm en su ascendencia". (1)
Ponga un punto de corte de depuración en FormOmittedChecker#check()
, dentro del bloque if
donde isInNeedOfForm(component)
ha devuelto true
, que es la línea 99 desde Mojarra 2.2.12.
96 if (isForm(component)) {
97 result = VisitResult.REJECT;
98 } else if (isInNeedOfForm(component)) {
* 99 addFormOmittedMessage(finalContext);
100 }
Dada una página con un campo de entrada sin un <h:form>
,
<h:inputText id="someInputText" />
el punto de ruptura se verá a continuación en Eclipse:
Como puede ver en la captura de pantalla, puede inspeccionar la variable del component
en la pila de variables y luego inspeccionar su clientId
(o id
). Finalmente, puede ubicarlo y correlacionarlo en la salida HTML generada y / o el código fuente JSF.
Sin embargo, estoy de acuerdo en que el mensaje debe contener un mejor diagnóstico. Esto se solucionó en Mojarra 2.3.0-m04 según el número 4026 .
¿Hay alguna manera de determinar qué línea (o incluso qué archivo) está causando el
El componente de formulario necesita tener un UIForm en su ascendencia. Sugerencia: encierre los componentes necesarios dentro de
mensaje de advertencia de Primefaces? Acabo de empezar a trabajar en un proyecto establecido con muchos, muchos archivos .xhtml (escritos por otros) con todo tipo de plantillas y herencia, y tengo problemas para restringir qué archivo está causando el problema.
Intenté buscar en Google sin suerte, y no puedo encontrar una respuesta en SO que aborde cómo encontrar el origen del error.
Actualización : no es tan simple como ir a la página que se muestra en la url. Por ejemplo, la advertencia se muestra cuando ''../foo.xhtml''
a ''../foo.xhtml''
; sin embargo, foo.xhtml
implementa una plantilla e incluye muchos otros archivos .xhtml
(que a su vez incluyen cada uno un poco más de archivos .xhtml
). Todos los archivos son bastante importantes (al menos 500 líneas).