stw*_*sel 1 xpages xpages-extlib
我正在努力使用XPage中的Object数据源:
<xp:this.data>
<xe:objectData var="demo" ignoreRequestParams="true"
readonly="false" scope="view"
createObject="#{javascript:return new demo.SampleBean();}">
</xe:objectData>
</xp:this.data>
Run Code Online (Sandbox Code Playgroud)
当我save();在SSJS中执行XPage时,我收到错误:
Error saving data source demo The save method has not been implemented in the data source
这堂课很简单:
package demo;
import java.io.Serializable;
public class SampleBean implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String job;
public String getName() {
return this.name;
}
public String getJob() {
return this.job;
}
public void setName(final String name) {
this.name = name;
}
public void setJob(final String job) {
this.job = job;
}
public void dummyAction() {
System.out.println("Here shall be logic");
}
}
Run Code Online (Sandbox Code Playgroud)
我试图public void save();在类中添加一个方法,但这并没有成功.所以我正在寻找一个Object数据源的示例
您已经createObject为数据源定义了属性,但是您没有指定saveObject属性...这就是您所获得的错误消息("保存方法尚未实现")所指的内容.
因此,例如,如果您希望在dummyAction()触发保存时运行方法,请尝试以下操作:
<xp:this.data>
<xe:objectData var="demo" ignoreRequestParams="true"
readonly="false" scope="view"
createObject="#{javascript:return new demo.SampleBean();}"
saveObject="#{javascript:return value.dummyAction();}">
</xe:objectData>
</xp:this.data>
Run Code Online (Sandbox Code Playgroud)
将saveObject属性指定为SSJS方法绑定时,该变量value将绑定到数据对象,然后调用方法绑定.因此,您可以传递value给其他对象来处理保存对象的业务逻辑,也可以使用语法value.anyMethod()将对象序列化的业务逻辑保持在对象本身的内部.
注意:无论你在这个方法中使用什么逻辑,你都需要返回一个布尔值(不是void),这样可以将返回值false视为取消,就像标准的Domino文档数据源一样.