问题描述
在我的 xpages 应用程序中,我想通过托管 bean 中的保存方法保存文档.但是,我不知道如何在此保存方法中包含验证规则并将消息发送回 XPage.我尝试了几个我在谷歌上找到的例子,但没有一个奏效.也许有人可以说明如何在不设置单独的验证 bean 的情况下添加简单的服务器端验证?
In my xpages application I want to save documents via a save method in a managed bean. However I do not know how to include validation rules in this save method and send a message back to the XPage. I tried several examples that I have found googling but none of them worked. Perhaps someone can shine a light on how I could add a simple server-side validation without setting up a separate validation bean or so?
以下是我到目前为止所想到的:
Here is what I have come up so far:
public void save(Employee employee) throws ValidatorException {
try {
Document doc; openDBPlusView();
if (employee.getUnid() != null) {
doc = view.getDocumentByKey(employee.getUnid(), true);
} else {
doc = null;
}
if (doc == null) {
doc = db.createDocument();
}
if (employee.getEmail().equals("")) {
FacesMessage message = new FacesMessage();
message.setDetail("Email missing");
throw new ValidatorException(message);
} else {
doc.replaceItemValue("email", employee.getEmail());
}
doc.replaceItemValue("Form", "employee");
doc.save(true, false);
recycleNotesObjects();
} catch (NotesException e) {
e.printStackTrace();
}
}
推荐答案
试试这个示例,它应该可以解决你的问题:
Try this sample, it should solve your problem:
package com.test.data;
public class Employee {
private String email;
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
FormBean(用于在笔记后端保存数据的 bean):
package com.test.bean;
import java.io.Serializable;
import com.test.data.Employee;
public class FormBean implements Serializable {
private static final long serialVersionUID = -1042911106119057617L;
public void save(Employee employee) {
System.out.println("Keep in mind: Save will only be entered if no validation errors! JSF Lifecycle!");
System.out.println(employee.getEmail());
}
}
FormValidators(用于验证的 bean,在您的示例中为电子邮件地址):
package com.test.validation;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
public class FormValidators implements Serializable {
private static final long serialVersionUID = 7157377379640149444L;
public void validateEmail(FacesContext facesContext, UIComponent component, Object value) {
// Check if email is valid or not
if (value.toString().equals("") || value.toString().indexOf('@') == -1) {
// Create a message -> email is invalid
FacesMessage message = new FacesMessage("Email is invalid!");
// Throw an exception so that it prevents document from being saved
throw new ValidatorException(message);
}
}
}
人脸配置:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<managed-bean>
<managed-bean-name>formBean</managed-bean-name>
<managed-bean-class>com.test.bean.FormBean</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>formValidators</managed-bean-name>
<managed-bean-class>com.test.validation.FormValidators</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
<!--AUTOGEN-START-BUILDER: Automatically generated by IBM Domino Designer. Do not modify.-->
<!--AUTOGEN-END-BUILDER: End of automatically generated section-->
</faces-config>
XPage(用于测试您的需求/整合):
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:br></xp:br>
<xp:br></xp:br>
<xp:messages id="messages1"></xp:messages>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:inputText id="txtEmail" validator="#{formValidators.validateEmail}" value="#{requestScope.email}"
required="true">
</xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button id="btnSave" value="Save">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var employee:com.test.data.Employee = new com.test.data.Employee();
employee.setEmail(requestScope.email);
formBean.save(employee);}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:view>
请记住:只有在没有验证错误的情况下才会输入保存.JSF 生命周期!
Keep in mind: Save will only be entered if no validation errors. JSF Lifecycle!
这篇关于向我的保存方法添加验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!