шаблоны с ui: insert-ui: композиция не работает хорошо - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь использовать шаблоны 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, но я не нашел решения, точно такой же код без использования шаблона работает отлично, возможно, что мне нужно что-то в коде или есть ошибка, если кто-то знает или возникли аналогичные проблемы, я был бы признателен, если бы Я поделился этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...