【发布时间】: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。