【发布时间】:2015-05-17 11:59:58
【问题描述】:
谁能提供一个示例,说明如何使用托管 bean 执行基本的 CRUD 操作,带有后端 RichText 字段,因此最终结果与在标准 XPage 开发中使用文档数据源相同。
以下代码显然是错误的或不完整的,但我找不到任何文档来进一步说明。
我知道我还没有回收任何东西。
非常感谢。
public class RichTextTest implements Serializable {
private static final long serialVersionUID = 1L;
private String plainItem;
private RichTextItem richItem;
private String unid;
public RichTextTest ()throws NotesException {
String docID = ExtLibUtil.readParameter(FacesContext.getCurrentInstance(),"key");
if (StringUtil.isNotEmpty(docID)){load(docID);}}
public void load(String ID) throws NotesException{
Document doc = null;
setUnid(ID);
doc = ExtLibUtil.getCurrentDatabase().getDocumentByUNID(ID);
setPlainItem(doc.getItemValueString("PlainTextField"));
setRichItem ((RichTextItem) doc.getFirstItem("RichTextField"));
}
public void save() throws NotesException{
Database database = ExtLibUtil.getCurrentDatabase();
Document doc = database.getDocumentByUNID(getUnid());
doc.replaceItemValue("PlainTextField", getPlainItem());
doc.replaceItemValue("RichTextField",getRichItem());
doc.save();
}
public String getPlainItem() {
return plainItem;
}
public void setPlainItem(String plainItem) {
this.plainItem = plainItem;
}
public RichTextItem getRichItem() {
return richItem;
}
public void setRichItem(RichTextItem richItem) {
this.richItem = richItem;
}
public void setUnid(String unid) {
this.unid = unid;
}
public String getUnid() {
return unid;
}
在 XPage 上
<xp:inputText value="#{richTextTest.plainItem}" id="plainTextField1"> </xp:inputText>
<xp:br></xp:br>
<xp:inputRichText value="#{richTextTest.richItem}" id="richTextField1"></xp:inputRichText>
<xp:br></xp:br>
<xp:button value="Save" id="button1"><xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:executeScript script="#{richTextTest.save}"></xp:executeScript>
</xp:this.action></xp:eventHandler></xp:button>
【问题讨论】:
-
托管 bean 在序列化期间不能保存 Notes 对象,因此私有变量将不起作用。您可以将 RichText 存储为纯字符串。在您的 SAVE 事件中,还有一些工作要做。最简单/最节省的方法是将 RichText(不是 Richtext,而是 HTML - 网络上没有 RichText)视为 Mime 并使用 Mime 类进行保存
-
@stwissel 非常感谢您的帮助。在 XPages 中绕过 Java/Managed Beans 是一条非常曲折的道路,没有任何关于该做什么和不该做什么的详细文档。是的,我认为序列化和 Notes 对象存在一些问题,我在努力中遇到了一些问题。我没有使用 Mime 的经验,所以我想这是我的下一步。
标签: xpages