#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;
}
}