Я пытаюсь использовать шаблоны jsf facelets, используя компоненты ui: insert
в шаблоне и пользовательском интерфейсе: в котором они используются, мой код выглядит примерно так:
Шаблон:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<h:outputStylesheet name="css/default.css"/>
<h:outputStylesheet name="css/cssLayout.css"/>
<h:outputStylesheet name="css/Cabecera.css"/>
<h:outputStylesheet name="css/StyleButton.css"/>
<h:outputStylesheet name="css/Progreso.css"/>
<title>Registro</title>
</h:head>
<h:body>
<div id="top">
<ui:insert name="top">Top</ui:insert>
</div>
<div>
<div id="left">
<ui:insert name="left">Left</ui:insert>
</div>
<div id="content" class="left_content">
<ui:insert name="content">Content</ui:insert>
</div>
</div>
<div id="bottom">
<ui:insert name="bottom">Bottom</ui:insert>
</div>
</h:body>
</html>
А пользователь:
<ui:composition template="./../Templeates/plantilla.xhtml"
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">
<ui:define name="content">
<h:outputText value="Registrar Nuevo Estudiante" style="font-size: 35px;font-weight: 100;color: #dce9f0"/>
<h:form id = "formInput">
<p:outputLabel for="codigo" value="Codigo "/>
<p:chips id="codigo" label="codigo Estudiante" value="#{RegistroAsistencia.codigos}"/>
</h:form>
<h:form id="formbutton" >
<p:commandButton value="Añadir" icon="ui-icon-star" actionListener="#{RegistroAsistencia.agregarAsesoriaEstudiante()}" update=":formInput">
<p:resetInput target=":formInput"/>
</p:commandButton>
</h:form>
</ui:define>
</ui:composition>
в управляемых бобах у меня что-то вроде
public List<String> getCodigos() {
Logger.getLogger(ConsultaInformacionAsistentesBean.class.getName()).log(Level.SEVERE, "--->\n get codigos: "+codigos+"\n");
return codigos;
}
public void setCodigos(List<String> codigos) {
Logger.getLogger(ConsultaInformacionAsistentesBean.class.getName()).log(Level.SEVERE, "--->\nset codigos: "+codigos+"\n");
this.codigos = codigos;
}
Я поставил регистраторы, чтобы убедиться, что методы get и set используются соответственно, когда я использую кнопку «Añadir», запрос set никогда не выполняется, я проверяю его без использования шаблона, и в этом он работает:
get codes: null
set codes: null <-- When pressing the button
set codes: [2135494]
но когда я пытаюсь использовать шаблон:
get codigos: null
nothing <-- When pressing the button
get codigos: null
А в методе agregarAsesoriaEstudiante кодигос равен нулю.
В заключение, если я использую шаблон, метод "set" элементов никогда не используется, поэтому в managedBean они имеют значение null, и я не могу получить входные данные, попробуйте другие элементы PrimeFaces, отличные от p: chips как p: inputText, но я не нашел решения, точно такой же код без использования шаблона работает отлично, возможно, что мне нужно что-то в коде или есть ошибка, если кто-то знает или возникли аналогичные проблемы, я был бы признателен, если бы Я поделился этим.