Атрибуты JSF MyFaces не обновляются

#jsf #quarkus #myfaces

Вопрос:

Я играю со своими лицами и Кваркусом. К сожалению, я уже борюсь с очень простым вариантом использования отправки формы.

Если я нажму «сохранить», значение «DetailView.test» отображается с введенными данными, но значения «DetailView.user.FirstName» и «DetailView.user.Фамилия» не обновляются.

 <?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://xmlns.jcp.org/jsf/core"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions">

<h:body>
    <ui:composition template="templates/commonLayout.xhtml">
        <ui:define name="content">
            <h:form id="user-form">
                <div class="input-group">
                    <h:outputLabel for="firstName">First Name:</h:outputLabel>
                    <h:inputText id="firstName" value="#{detailView.user.firstName}" required="true" disabled="true"/>
                </div>
                <div class="input-group">
                    <h:outputLabel for="lastName">Last Name:</h:outputLabel>
                    <h:inputText id="lastName" value="#{detailView.user.lastName}" required="true" disabled="true"/>
                </div>
                <div class="input-group">
                    <h:outputLabel for="test">Test:</h:outputLabel>
                    <h:inputText id="test" value="#{detailView.test}" required="true"/>
                </div>
                <button id="edit-button" type="button" onclick="edit()">Edit</button>
                <h:commandButton id="save-button" value="Save" action="#{detailView.save}"/>
            </h:form>
        </ui:define>
    </ui:composition>
</h:body>
</html>
 
 package com.t1m0.quarkus.view;


import javax.annotation.PostConstruct;

import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;

import com.t1m0.quarkus.model.User;
import com.t1m0.quarkus.model.UserState;
import com.t1m0.quarkus.persistence.UserRepository;
import org.apache.commons.lang3.StringUtils;

@ViewScoped
@Named("detailView")
public class DetailView {

    @Inject
    private UserRepository userRepository;
    @Inject
    private HttpServletRequest httpServletRequest;

    private User user;

    private String test;

    public String getTest() {
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }

    @PostConstruct
    public void postConstruct() {
        String uuid = httpServletRequest.getParameter("uuid");
        if(StringUtils.isNotEmpty(uuid)){
            user = userRepository.find(uuid);
        } else {
            user = new User();
        }
    }

    public void save() {
        user = userRepository.save(user);
    }

    public UserRepository getUserRepository() {
        return userRepository;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}