1
我创建了一个动态表单,用户可以通过单击命令按钮添加多个日历输入字段。我的问题是,View和Been之间的连接被中断。提交表单将返回之前在Bean中创建的日期,而不是用户提交的日期。如何解决它?动态JSF表单:输入字段和Bean之间的链接不起作用
编辑:更改日期和事后扩展表单而不保存之前导致失去更改的日期(s)。即使使用由@wittakarn提供的包装对象的解决方案。
编辑:ajax片段似乎是问题,当我拿掉它的工作。
DynamicFormBean:
import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class DynamicformBean implements Serializable {
private static final Logger LOGGER = Logger.getLogger(DynamicformBean.class.getName());
private List<Date> values;
@PostConstruct
public void init() {
values = new LinkedList<>();
values.add(new Date());
}
public void submit() {
// save values in database
LOGGER.info(values.toString());
}
public void extend() {
values.add(new Date());
}
public void setValues(List<Date> values) {
this.values = values;
}
public List<Date> getValues() {
return values;
}
}
笔者认为:dynamicform.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<f:view 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:body>
<h:form><h2>Dynamicform example</h2>
<ui:repeat value="#{dynamicformBean.values}" var="value">
<p:outputLabel for="mask" value="Mask:" />
<p:calendar id="mask" value="#{value}" pattern="dd.MM.yyyy" mask="true">
<f:convertDateTime pattern="dd.MM.yyyy" timeZone="CET" />
</p:calendar>
<br />
</ui:repeat>
<h:commandButton value="Extend">
<f:ajax listener="#{dynamicformBean.extend}" process="@form" render="@form" />
</h:commandButton>
<h:commandButton action="#{dynamicformBean.submit}" value="Save" />
</h:form>
</h:body>
</f:view>
日志只是打印当前日期元素。
谢谢,这对保存起作用。但是,通过更改日期并延长表格 - 之前不保存 - 更改后的值将丢失。 我排除了保持模板/ css /头的东西,有一个最小的工作示例。 – 2014-10-30 07:23:05
我解决了你提出的包装对象的问题。我有一些使用primefaces命令按钮和即时选项导致的问题。以下片段解决了以下问题:“
\t \t \t \t ' – 2014-10-30 12:16:44@mbeat很高兴能为您提供帮助。 – wittakarn 2014-10-30 14:14:26