如何使用Hibernate和spring将动态JSF表单保存到数据库中
我们正在使用JSF Primefaces 3.2。 我有一个模块,用户将创建一些动态字段与他自己的选择,如textfield,textarea,selectbox,复选框,单选按钮,然后一个表单将根据这些选定的字段生成。 我已经成功地创建了第一部分,其中用户正在创建表单,并根据自己的选择生成表单。但是现在我面临的问题是如何将这个表单保存到数据库中。 在这里,我附上了我的模块的一些代码,以便您能够轻松理解并快速找到解决方案 这里是JSF表单,在这里我使用动态方式生成了所有字段如何使用Hibernate和spring将动态JSF表单保存到数据库中,jsf,spring-mvc,primefaces,Jsf,Spring Mvc,Primefaces,我们正在使用JSF Primefaces 3.2。 我有一个模块,用户将创建一些动态字段与他自己的选择,如textfield,textarea,selectbox,复选框,单选按钮,然后一个表单将根据这些选定的字段生成。 我已经成功地创建了第一部分,其中用户正在创建表单,并根据自己的选择生成表单。但是现在我面临的问题是如何将这个表单保存到数据库中。 在这里,我附上了我的模块的一些代码,以便您能够轻松理解并快速找到解决方案 这里是JSF表单,在这里我使用动态方式生成了所有字段
#{current.index+1}。
#{mrow.optionName}
#{checkrow.optionName}
#{m.menuTitle}
#{selectrow.optionName}
#{orow.optionName}
A
桑杰
A
B
C
D
此模板正在构建中。我们将很快推出此模板
下面是我的Java操作类,它将用于用户请求
@Named("objectiveTemplateAction")
@Scope(ScopeType.VIEW)
public class EMRObjectiveTemplateAction implements Serializable {
private static final Logger log = LoggerFactory.getLogger(EMRObjectiveTemplateAction.class);
@Inject
private EMRObjectiveTemplateService emrObjectiveTemplateService;
@Inject
private UserSession userSession;
private EMRObjectiveTemplate objectiveTemplate = new EMRObjectiveTemplate();
private EMRObjectiveTemplateQuestion question = new EMRObjectiveTemplateQuestion();
private List<EMRObjectiveTemplateQuestion> questionList = null;
private List<EMRObjectiveTemplate> objectiveTemplateList = new ArrayList<EMRObjectiveTemplate>();
private List<EMRObjectiveQuestionType> questionTypeList = new ArrayList<EMRObjectiveQuestionType>();
private List<EMRObjectiveTemplateQuestionOption> questionOptionList = new ArrayList<EMRObjectiveTemplateQuestionOption>();
private List<EMRObjectiveTemplateQuestionOption> questionOptionColumnList = new ArrayList<EMRObjectiveTemplateQuestionOption>();
private List<Long> optionMenuCountList = new ArrayList<Long>();
private List<Long> optionRatingCountList = new ArrayList<Long>();
private List<EMRObjectiveTemplateQuestionOptionMenu> optionMenuList = new ArrayList<EMRObjectiveTemplateQuestionOptionMenu>();
private List<EMRObjectiveTemplateQuestionOptionRating> optionRatingList = new ArrayList<EMRObjectiveTemplateQuestionOptionRating>();
private EMRObjectiveTemplateQuestionOptionValue optionValue = new EMRObjectiveTemplateQuestionOptionValue();
private Long objectiveTemplateID;
private Long questionTypeID;
private String title;
private String description;
private String questionContainerName;
private boolean showQuestionTabContainer = false;
private String questionOptionName;
private long optionMenuCount;
private long optionRatingCount;
private String menuOptionName;
@PostConstruct
public void init() {
this.objectiveTemplateList = this.emrObjectiveTemplateService.getAllTemplates();
this.questionTypeList = this.emrObjectiveTemplateService.getAllQuestionType();
// prefill optionMenuCountList with menuCount
this.optionMenuCountList.add(1L);
this.optionMenuCountList.add(2L);
this.optionMenuCountList.add(3L);
this.optionMenuCountList.add(4L);
this.optionMenuCountList.add(5L);
this.optionMenuCountList.add(6L);
this.optionMenuCountList.add(7L);
this.optionMenuCountList.add(8L);
this.optionMenuCountList.add(9L);
// prefill optionRatingCountList with ratingCount
this.optionRatingCountList.add(2L);
this.optionRatingCountList.add(3L);
this.optionRatingCountList.add(4L);
this.optionRatingCountList.add(5L);
this.optionRatingCountList.add(6L);
this.optionRatingCountList.add(7L);
this.optionRatingCountList.add(8L);
this.optionRatingCountList.add(9L);
this.optionRatingCountList.add(10L);
this.optionRatingCountList.add(11L);
this.optionRatingCountList.add(12L);
this.optionRatingCountList.add(13L);
this.optionRatingCountList.add(14L);
this.optionRatingCountList.add(15L);
this.optionRatingCountList.add(16L);
}
/**
* Recharge optionMenuList with requested optionMenuCount
*/
public void rowNumbers() {
this.optionMenuList = new ArrayList<EMRObjectiveTemplateQuestionOptionMenu>();
for(int i = 0; i < this.optionMenuCount; i++){
this.optionMenuList.add(new EMRObjectiveTemplateQuestionOptionMenu());
}
}
/**
* Recharge optionRatingList with requested optionRatingCount
*/
public void ratingNumbers() {
this.optionRatingList = new ArrayList<EMRObjectiveTemplateQuestionOptionRating>();
for(int i = 0; i < this.optionRatingCount; i++){
this.optionRatingList.add(new EMRObjectiveTemplateQuestionOptionRating());
}
}
/**
* Fetch all questions registered under this objectiveTemplateID
*/
public void loadTemplateQuestionsByID(){
System.out.println("Current Template ID: " + this.objectiveTemplateID);
this.questionList = this.emrObjectiveTemplateService.loadTemplateQuestionsByID(this.objectiveTemplateID);
System.out.println("Questions size: " + this.questionList.size());
for(EMRObjectiveTemplateQuestion q : this.questionList){
if(q.getQuestionType().getQuestionTypeVariant().equalsIgnoreCase("radio")){
this.optionValue = new EMRObjectiveTemplateQuestionOptionValue();
optionValue.setQuestion(q);
}
}
}
/**
* Save filled template into database
*/
public void fillAndSaveTemplate(){
for(EMRObjectiveTemplateQuestion q : this.questionList){
System.out.println("Option Value for Question " + q.getQuestionTitle() + " is: " + this.optionValue.getOptionValue());
// System.out.println("Question ANswer: " + q.getQuestionAnswer().getQuestionAnswer());
}
}
/**
* Filter Options according to position from this optionList
* @param optionsList
* @return
*/
public List<EMRObjectiveTemplateQuestionOption> getColumnOptionsList(List<EMRObjectiveTemplateQuestionOption> optionsList) {
List<EMRObjectiveTemplateQuestionOption> columnOptionsList = new ArrayList<EMRObjectiveTemplateQuestionOption>();
for(EMRObjectiveTemplateQuestionOption option : optionsList){
if(option.getOptionPosition().equalsIgnoreCase("COLUMN")){
columnOptionsList.add(option);
}
}
return columnOptionsList;
}
// Getter - Setter
public EMRObjectiveTemplate getObjectiveTemplate() {
return objectiveTemplate;
}
public void setObjectiveTemplate(EMRObjectiveTemplate objectiveTemplate) {
this.objectiveTemplate = objectiveTemplate;
}
public List<EMRObjectiveTemplate> getObjectiveTemplateList() {
return objectiveTemplateList;
}
public void setEmrObjectiveTemplateList(List<EMRObjectiveTemplate> objectiveTemplateList) {
this.objectiveTemplateList = objectiveTemplateList;
}
public Long getObjectiveTemplateID() {
return objectiveTemplateID;
}
public void setObjectiveTemplateID(Long objectiveTemplateID) {
this.objectiveTemplateID = objectiveTemplateID;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<EMRObjectiveQuestionType> getQuestionTypeList() {
return questionTypeList;
}
public void setQuestionTypeList(List<EMRObjectiveQuestionType> questionTypeList) {
this.questionTypeList = questionTypeList;
}
public Long getQuestionTypeID() {
return questionTypeID;
}
public void setQuestionTypeID(Long questionTypeID) {
this.questionTypeID = questionTypeID;
}
public String getQuestionContainerName() {
return questionContainerName;
}
public void setQuestionContainerName(String questionContainerName) {
this.questionContainerName = questionContainerName;
}
public boolean isShowQuestionTabContainer() {
return showQuestionTabContainer;
}
public void setShowQuestionTabContainer(boolean showQuestionTabContainer) {
this.showQuestionTabContainer = showQuestionTabContainer;
}
public List<EMRObjectiveTemplateQuestionOption> getQuestionOptionList() {
return questionOptionList;
}
public void setQuestionOptionList(List<EMRObjectiveTemplateQuestionOption> questionOptionList) {
this.questionOptionList = questionOptionList;
}
public List<EMRObjectiveTemplateQuestionOption> getQuestionOptionColumnList() {
return questionOptionColumnList;
}
public void setQuestionOptionColumnList(List<EMRObjectiveTemplateQuestionOption> questionOptionColumnList) {
this.questionOptionColumnList = questionOptionColumnList;
}
public String getQuestionOptionName() {
return questionOptionName;
}
public void setQuestionOptionName(String questionOptionName) {
this.questionOptionName = questionOptionName;
}
public EMRObjectiveTemplateQuestion getQuestion() {
return question;
}
public void setQuestion(EMRObjectiveTemplateQuestion question) {
this.question = question;
}
public List<EMRObjectiveTemplateQuestionOptionMenu> getOptionMenuList() {
return optionMenuList;
}
public void setOptionMenuList(List<EMRObjectiveTemplateQuestionOptionMenu> optionMenuList) {
this.optionMenuList = optionMenuList;
}
public String getMenuOptionName() {
return menuOptionName;
}
public void setMenuOptionName(String menuOptionName) {
this.menuOptionName = menuOptionName;
}
public long getOptionMenuCount() {
return optionMenuCount;
}
public void setOptionMenuCount(long optionMenuCount) {
this.optionMenuCount = optionMenuCount;
}
public List<Long> getOptionMenuCountList() {
return optionMenuCountList;
}
public void setOptionMenuCountList(List<Long> optionMenuCountList) {
this.optionMenuCountList = optionMenuCountList;
}
public long getOptionRatingCount() {
return optionRatingCount;
}
public void setOptionRatingCount(long optionRatingCount) {
this.optionRatingCount = optionRatingCount;
}
public List<Long> getOptionRatingCountList() {
return optionRatingCountList;
}
public void setOptionRatingCountList(List<Long> optionRatingCountList) {
this.optionRatingCountList = optionRatingCountList;
}
public List<EMRObjectiveTemplateQuestionOptionRating> getOptionRatingList() {
return optionRatingList;
}
public void setOptionRatingList(List<EMRObjectiveTemplateQuestionOptionRating> optionRatingList) {
this.optionRatingList = optionRatingList;
}
public List<EMRObjectiveTemplateQuestion> getQuestionList() {
return questionList;
}
public void setQuestionList(List<EMRObjectiveTemplateQuestion> questionList) {
this.questionList = questionList;
}
public EMRObjectiveTemplateQuestionOptionValue getOptionValue() {
return optionValue;
}
public void setOptionValue(EMRObjectiveTemplateQuestionOptionValue optionValue) {
this.optionValue = optionValue;
}
}
@Named(“objectiveTemplateAction”)
@作用域(ScopeType.VIEW)
公共类EMRObjectiveTemplateAction实现可序列化{
私有静态最终记录器log=LoggerFactory.getLogger(EMRObjectiveTemplateAction.class);
@注入
私有EMRObjectiveTemplateService EMRObjectiveTemplateService;
@注入
私有用户会话;
私有EMRObjectiveTemplate objectiveTemplate=新的EMRObjectiveTemplate();
私有EMRObjectiveTemplateQuestion=新EMRObjectiveTemplateQuestion();
私有列表questionList=null;
私有列表objectiveTemplateList=新的ArrayList();
私有列表questionTypeList=new ArrayList();
private List questionOptionList=新建ArrayList();
私人Lis
@Named("objectiveTemplateAction")
@Scope(ScopeType.VIEW)
public class EMRObjectiveTemplateAction implements Serializable {
private static final Logger log = LoggerFactory.getLogger(EMRObjectiveTemplateAction.class);
@Inject
private EMRObjectiveTemplateService emrObjectiveTemplateService;
@Inject
private UserSession userSession;
private EMRObjectiveTemplate objectiveTemplate = new EMRObjectiveTemplate();
private EMRObjectiveTemplateQuestion question = new EMRObjectiveTemplateQuestion();
private List<EMRObjectiveTemplateQuestion> questionList = null;
private List<EMRObjectiveTemplate> objectiveTemplateList = new ArrayList<EMRObjectiveTemplate>();
private List<EMRObjectiveQuestionType> questionTypeList = new ArrayList<EMRObjectiveQuestionType>();
private List<EMRObjectiveTemplateQuestionOption> questionOptionList = new ArrayList<EMRObjectiveTemplateQuestionOption>();
private List<EMRObjectiveTemplateQuestionOption> questionOptionColumnList = new ArrayList<EMRObjectiveTemplateQuestionOption>();
private List<Long> optionMenuCountList = new ArrayList<Long>();
private List<Long> optionRatingCountList = new ArrayList<Long>();
private List<EMRObjectiveTemplateQuestionOptionMenu> optionMenuList = new ArrayList<EMRObjectiveTemplateQuestionOptionMenu>();
private List<EMRObjectiveTemplateQuestionOptionRating> optionRatingList = new ArrayList<EMRObjectiveTemplateQuestionOptionRating>();
private EMRObjectiveTemplateQuestionOptionValue optionValue = new EMRObjectiveTemplateQuestionOptionValue();
private Long objectiveTemplateID;
private Long questionTypeID;
private String title;
private String description;
private String questionContainerName;
private boolean showQuestionTabContainer = false;
private String questionOptionName;
private long optionMenuCount;
private long optionRatingCount;
private String menuOptionName;
@PostConstruct
public void init() {
this.objectiveTemplateList = this.emrObjectiveTemplateService.getAllTemplates();
this.questionTypeList = this.emrObjectiveTemplateService.getAllQuestionType();
// prefill optionMenuCountList with menuCount
this.optionMenuCountList.add(1L);
this.optionMenuCountList.add(2L);
this.optionMenuCountList.add(3L);
this.optionMenuCountList.add(4L);
this.optionMenuCountList.add(5L);
this.optionMenuCountList.add(6L);
this.optionMenuCountList.add(7L);
this.optionMenuCountList.add(8L);
this.optionMenuCountList.add(9L);
// prefill optionRatingCountList with ratingCount
this.optionRatingCountList.add(2L);
this.optionRatingCountList.add(3L);
this.optionRatingCountList.add(4L);
this.optionRatingCountList.add(5L);
this.optionRatingCountList.add(6L);
this.optionRatingCountList.add(7L);
this.optionRatingCountList.add(8L);
this.optionRatingCountList.add(9L);
this.optionRatingCountList.add(10L);
this.optionRatingCountList.add(11L);
this.optionRatingCountList.add(12L);
this.optionRatingCountList.add(13L);
this.optionRatingCountList.add(14L);
this.optionRatingCountList.add(15L);
this.optionRatingCountList.add(16L);
}
/**
* Recharge optionMenuList with requested optionMenuCount
*/
public void rowNumbers() {
this.optionMenuList = new ArrayList<EMRObjectiveTemplateQuestionOptionMenu>();
for(int i = 0; i < this.optionMenuCount; i++){
this.optionMenuList.add(new EMRObjectiveTemplateQuestionOptionMenu());
}
}
/**
* Recharge optionRatingList with requested optionRatingCount
*/
public void ratingNumbers() {
this.optionRatingList = new ArrayList<EMRObjectiveTemplateQuestionOptionRating>();
for(int i = 0; i < this.optionRatingCount; i++){
this.optionRatingList.add(new EMRObjectiveTemplateQuestionOptionRating());
}
}
/**
* Fetch all questions registered under this objectiveTemplateID
*/
public void loadTemplateQuestionsByID(){
System.out.println("Current Template ID: " + this.objectiveTemplateID);
this.questionList = this.emrObjectiveTemplateService.loadTemplateQuestionsByID(this.objectiveTemplateID);
System.out.println("Questions size: " + this.questionList.size());
for(EMRObjectiveTemplateQuestion q : this.questionList){
if(q.getQuestionType().getQuestionTypeVariant().equalsIgnoreCase("radio")){
this.optionValue = new EMRObjectiveTemplateQuestionOptionValue();
optionValue.setQuestion(q);
}
}
}
/**
* Save filled template into database
*/
public void fillAndSaveTemplate(){
for(EMRObjectiveTemplateQuestion q : this.questionList){
System.out.println("Option Value for Question " + q.getQuestionTitle() + " is: " + this.optionValue.getOptionValue());
// System.out.println("Question ANswer: " + q.getQuestionAnswer().getQuestionAnswer());
}
}
/**
* Filter Options according to position from this optionList
* @param optionsList
* @return
*/
public List<EMRObjectiveTemplateQuestionOption> getColumnOptionsList(List<EMRObjectiveTemplateQuestionOption> optionsList) {
List<EMRObjectiveTemplateQuestionOption> columnOptionsList = new ArrayList<EMRObjectiveTemplateQuestionOption>();
for(EMRObjectiveTemplateQuestionOption option : optionsList){
if(option.getOptionPosition().equalsIgnoreCase("COLUMN")){
columnOptionsList.add(option);
}
}
return columnOptionsList;
}
// Getter - Setter
public EMRObjectiveTemplate getObjectiveTemplate() {
return objectiveTemplate;
}
public void setObjectiveTemplate(EMRObjectiveTemplate objectiveTemplate) {
this.objectiveTemplate = objectiveTemplate;
}
public List<EMRObjectiveTemplate> getObjectiveTemplateList() {
return objectiveTemplateList;
}
public void setEmrObjectiveTemplateList(List<EMRObjectiveTemplate> objectiveTemplateList) {
this.objectiveTemplateList = objectiveTemplateList;
}
public Long getObjectiveTemplateID() {
return objectiveTemplateID;
}
public void setObjectiveTemplateID(Long objectiveTemplateID) {
this.objectiveTemplateID = objectiveTemplateID;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<EMRObjectiveQuestionType> getQuestionTypeList() {
return questionTypeList;
}
public void setQuestionTypeList(List<EMRObjectiveQuestionType> questionTypeList) {
this.questionTypeList = questionTypeList;
}
public Long getQuestionTypeID() {
return questionTypeID;
}
public void setQuestionTypeID(Long questionTypeID) {
this.questionTypeID = questionTypeID;
}
public String getQuestionContainerName() {
return questionContainerName;
}
public void setQuestionContainerName(String questionContainerName) {
this.questionContainerName = questionContainerName;
}
public boolean isShowQuestionTabContainer() {
return showQuestionTabContainer;
}
public void setShowQuestionTabContainer(boolean showQuestionTabContainer) {
this.showQuestionTabContainer = showQuestionTabContainer;
}
public List<EMRObjectiveTemplateQuestionOption> getQuestionOptionList() {
return questionOptionList;
}
public void setQuestionOptionList(List<EMRObjectiveTemplateQuestionOption> questionOptionList) {
this.questionOptionList = questionOptionList;
}
public List<EMRObjectiveTemplateQuestionOption> getQuestionOptionColumnList() {
return questionOptionColumnList;
}
public void setQuestionOptionColumnList(List<EMRObjectiveTemplateQuestionOption> questionOptionColumnList) {
this.questionOptionColumnList = questionOptionColumnList;
}
public String getQuestionOptionName() {
return questionOptionName;
}
public void setQuestionOptionName(String questionOptionName) {
this.questionOptionName = questionOptionName;
}
public EMRObjectiveTemplateQuestion getQuestion() {
return question;
}
public void setQuestion(EMRObjectiveTemplateQuestion question) {
this.question = question;
}
public List<EMRObjectiveTemplateQuestionOptionMenu> getOptionMenuList() {
return optionMenuList;
}
public void setOptionMenuList(List<EMRObjectiveTemplateQuestionOptionMenu> optionMenuList) {
this.optionMenuList = optionMenuList;
}
public String getMenuOptionName() {
return menuOptionName;
}
public void setMenuOptionName(String menuOptionName) {
this.menuOptionName = menuOptionName;
}
public long getOptionMenuCount() {
return optionMenuCount;
}
public void setOptionMenuCount(long optionMenuCount) {
this.optionMenuCount = optionMenuCount;
}
public List<Long> getOptionMenuCountList() {
return optionMenuCountList;
}
public void setOptionMenuCountList(List<Long> optionMenuCountList) {
this.optionMenuCountList = optionMenuCountList;
}
public long getOptionRatingCount() {
return optionRatingCount;
}
public void setOptionRatingCount(long optionRatingCount) {
this.optionRatingCount = optionRatingCount;
}
public List<Long> getOptionRatingCountList() {
return optionRatingCountList;
}
public void setOptionRatingCountList(List<Long> optionRatingCountList) {
this.optionRatingCountList = optionRatingCountList;
}
public List<EMRObjectiveTemplateQuestionOptionRating> getOptionRatingList() {
return optionRatingList;
}
public void setOptionRatingList(List<EMRObjectiveTemplateQuestionOptionRating> optionRatingList) {
this.optionRatingList = optionRatingList;
}
public List<EMRObjectiveTemplateQuestion> getQuestionList() {
return questionList;
}
public void setQuestionList(List<EMRObjectiveTemplateQuestion> questionList) {
this.questionList = questionList;
}
public EMRObjectiveTemplateQuestionOptionValue getOptionValue() {
return optionValue;
}
public void setOptionValue(EMRObjectiveTemplateQuestionOptionValue optionValue) {
this.optionValue = optionValue;
}
}