2017-05-03 17 views
1

私の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)フォームが使用され、リッチテキストタイプのフィールドが使用されます。

説明/サンプルコードが不足していると思われるので、助けてください。

+0

従来のNotesフォームでデータを表示する必要がありますか?それとも、データを保存するだけですか? –

+0

こんにちはフランク、文書をノーツフォームで編集することはできません(フォームはWebのみ)xpagesアプリケーション内の – Malin

+0

では、Web上にリッチテキストが存在しないため、フィールドにプレーンテキストとして 'RichText' htmlを格納します。 –

答えて

0

私の後で話してください:リッチテキストはWeb上にはなく、MIMEだけです。

メモリッチテキストアイテムは、「古典的な」リッチテキストまたはMimeエントリとしてデータを格納できます。これは、フォームのフィールドプロパティで設定できるプロパティです。あなたはMIMEとしてデータを保存したいが、コンテンツはまだ "古典的な"リッチテキストであるかもしれない。 2つを区別してください。

古典的には、Convert to HTMLを使用して適切な文字列を取得できます。

書面を返すときは、最初にBodyフィールドを削除し、MimeEntity(サンプルコードのリンクを参照)を使用して再作成します。

また、this gistは、どのようにコード化できるかを大まかに示しています。

希望に役立ちます!

+0

ありがとう!私はそれを見て、もう一度試してみます。 – Malin

関連する問題