【问题标题】:Bind an inputRichText to a Bean将 inputRichText 绑定到 Bean
【发布时间】:2012-10-09 15:13:44
【问题描述】:

我正在尝试将 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>

点击“保存”按钮后出现错误,该按钮调用了 Chat 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 = "";
    }
}

【问题讨论】:

  • 斯文的回答绝对正确。在这种情况下,另一个“调试”提示是更改 getter 和 setter 以接受/返回一个对象(而不是字符串),并在方法中自我检查对象的类是什么。
  • 马克,好建议。我试过了,但只更改了“setChatContent()”方法上的类。这不起作用,因为运行时检查是否有相同参数类的 setter 是从 getter 返回的那个。结果是一个只读的 inputRichText。

标签: javabeans xpages


【解决方案1】:

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;
   }
}

【讨论】:

  • 如何将富文本字段中的内容(在 java 中)加载到 mimemultipart 字段中?例如employee.setComment(doc.???);
猜你喜欢
  • 2017-03-30
  • 2011-07-31
  • 1970-01-01
  • 2013-05-21
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
相关资源
最近更新 更多