Cómo hacer cumplir JSF para crear nueva instancia de frijol en lugar de tirar NullPointerException?

StackOverflow https://stackoverflow.com/questions/1922434

Pregunta

Estoy casi seguro de que hago algo mal y por lo tanto el título de la pregunta es un poco incorrecto.

Tengo un formulario con varios campos para crear un nuevo usuario-objetos (como campos de usuario, contraseña, fecha de nacimiento, etc.). Y tengo 2 botones - Cancelar y cree. No he terminado todavía Crear :), pero cuando pulso Cancelar veo NullPointerException. Aquí es código simplificado:

<f:view>
    <h:form>
        <h:panelGroup layout="block">       
            <h:inputText id="add_login" value="#{userSupport.user.login}"/>
            <h:inputSecret id="add_password" value="#{userSupport.user.password}"/>
            <h:inputText id="add_name" value="#{userSupport.user.name}"/>
            <h:inputText id="add_surname" value="#{userSupport.user.surname}"/>

            <h:commandButton value="Cancel" action="cancel"/>
        </h:panelGroup>
    </h:form>
</f:view>

clase UserSupport tiene user campo con getter y setter y algunos otros métodos. Es un grano de primavera con ámbito de sesión.

Cuando presione Cancelar, veo NPE porque JSF trata de salvar los valores de las entradas de usuario a objetos, pero el usuario-objeto es nulo.

¿Cuál es la forma correcta de hacer esto?

¿Fue útil?

Solución

en el botón de cancelar conjunto immediate="true" Esto saltará todas las fases "no deseados".

El mismo problema, sin embargo, se levantará con el botón "crear", y no se debe utilizar immediate allí. Mejor inicializar la propiedad user -. Ya sea en el constructor, o el uso de la anotación @PostConstruct en un método, que hace las acciones de inicialización

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top