私のXPagesアプリケーションのリッチテキストフィールドを読み書きします。XPageのリッチテキストフィールドの表示と編集
私は以下のようにリッチテキストフィールドの内容を含まなければならないフィールドを定義している私のEmployeeクラスで:
私EmployeeDAOクラスで今すぐprivate com.ibm.xsp.http.MimeMultipart comment;
public com.ibm.xsp.http.MimeMultipart getComment() {
return comment;
}
public void setComment(com.ibm.xsp.http.MimeMultipart comment) {
this.comment = comment;
}
私はノートのリッチテキストコンテンツをロードする方法を疑問に思いますドキュメントを作成し、コメントフィールドを設定しますか?
私は「エレガント」ということはないと思う、次の方法が見つかりました:私は
<xp:inputRichText id="inputRichText1"
value="#{employeeBean.employee.comment}" style="height:400px"
readonly="#{employeeBean.employee.editable eq false}">
</xp:inputRichText>
:以下のようにinputRichTextコントロール:私のXPageで
public void loadRT(Document doc){
MimeMultipart strValue = null;
try {
if (doc.hasItem("Body")){
if (doc.getFirstItem("Body") != null) {
//?? not sure what the type value stands for
if (doc.getFirstItem("Body").getType() != 1) {
strValue = MimeMultipart.fromHTML(doc.getItemValueString("Body"));
} else {
RichTextItem rti = (RichTextItem) doc.getFirstItem("Body");
if (rti != null) {
HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String curURL = rq.getRequestURL().toString();
String docid = doc.getUniversalID();
String notesURL = curURL.substring(0, curURL.indexOf(rq.getContextPath()) + 1) + doc.getParentDatabase().getFilePath() + "/0/" + docid + "/" + "Body"
+ "?OpenField";
URL docURL;
try {
docURL = new URL(notesURL);
URLConnection uc = docURL.openConnection();
uc.setRequestProperty("Cookie", rq.getHeader("Cookie"));
uc.connect();
// do the HTTP request
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(), "UTF-8"));
// process the data returned
StringBuffer strBuf = new StringBuffer();
String tmpStr = "";
while ((tmpStr = in.readLine()) != null) {
strBuf.append(tmpStr);
}
strValue = MimeMultipart.fromHTML(strBuf.toString());
employee.setComment(strValue);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
} catch (NotesException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
私はXPにこれをバインドすることができますがリッチテキストコントロールをコンテンツのサイズに合わせて調整する方法や、リッチテキストツールバーオプションの一部を除外する方法はこれまでにはありません。
調整を保存する方法については、私はそれほど遠慮していません。
私のアプローチは正しいですか?それとももっときれいなアプローチがありますか?
FYI Notes文書のフィールドは、リッチテキストタイプです。しかしながら、内容は「唯一の」テキストである。現時点では、Domino(Web)フォームが使用され、リッチテキストタイプのフィールドが使用されます。
説明/サンプルコードが不足していると思われるので、助けてください。
従来のNotesフォームでデータを表示する必要がありますか?それとも、データを保存するだけですか? –
こんにちはフランク、文書をノーツフォームで編集することはできません(フォームはWebのみ)xpagesアプリケーション内の – Malin
では、Web上にリッチテキストが存在しないため、フィールドにプレーンテキストとして 'RichText' htmlを格納します。 –