我正在尝试将xp:inputRichText绑定到bean(ChatBean),但是当代码尝试将字段更新到bean时会收到此验证错误:
java.lang.IllegalArgumentException: argument type mismatch
Run Code Online (Sandbox Code Playgroud)
我尝试了一些不同的东西,比如转换器,以确保文本将是一个字符串,打印调试消息以找出出错的地方,更改"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>
Run Code Online (Sandbox Code Playgroud)
在我点击"保存"按钮后发生错误,该按钮调用聊天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 = "";
}
}
Run Code Online (Sandbox Code Playgroud)
所述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;
}
}
Run Code Online (Sandbox Code Playgroud)