3

xp:inputRichTextをBean(ChatBean)にバインドしようとしていますが、コードがフィールドをBeanに更新しようとすると、この検証エラーが発生します。

java.lang.IllegalArgumentException: argument type mismatch

テキストが文字列になるようにコンバーターなど、いくつかの異なることを試しました。デバッグメッセージを出力して問題の場所を特定し、「setChatContent()」メソッドのタイプを変更しました(入力を読み取りに設定します)。 -のみ)、しかしそれを動作させることはできません。

私は何かが足りないのですか、それとも不可能ですか?何かご意見は?

ページ:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:messages id="messages1"></xp:messages>

<xp:inputRichText id="inputRichText1" value="#{Chat.chatContent}"></xp:inputRichText>

<xp:button value="Save" id="button1" type="button">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete" save="false">
        <xp:this.action>
            <xp:actionGroup>
                <xp:executeScript script="#{javascript:Chat.saveContent();}"></xp:executeScript>
                <xp:openPage name="/chat.xsp"></xp:openPage>
            </xp:actionGroup>
        </xp:this.action>
    </xp:eventHandler>
</xp:button>

エラーは、チャットBeanのメソッドを呼び出す[保存]ボタンを押した後に発生します(コードは短縮されています)。

public class ChatBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private String chatContent;

    public String getChatContent() {
        return chatContent;
    }

    public void setChatContent(String chatContent) {
        this.chatContent = chatContent;
    }

    public void saveContent() {
        // TODO implement save
        this.chatContent = "";
    }
}
4

1 に答える 1

8

UIInputRichTextには、 com.ibm.xsp.http.MimeMultipartタイプのオブジェクトが必要です。

代わりにこれで動作するようにChatBeanを変更すると、希望どおりに動作するはずです。

public class ChatBean implements Serializable {
   private static final long serialVersionUID = 1L;
   private com.ibm.xsp.http.MimeMultipart chatContent;

   public com.ibm.xsp.http.MimeMultipart getChatContent() {
       return chatContent;
   }

   public void setChatContent(com.ibm.xsp.http.MimeMultipart chatContent) {
       this.chatContent = chatContent;
   }

   public void saveContent() {
       // TODO implement save
       this.chatContent = null;
   }
}
于 2012-10-09T15:42:58.200 に答える