我正在尝试使用 Ajax 上传一些文本和图像。我正在使用 Struts2 框架和简单的 javascript。此上传显示错误如何解决。
在 JSP 页面中
<s:form action="javascript:void(0)" onsubmit="javascript:postUserOwnMessages()"
enctype="multipart/form-data">
<s:textarea rows="2" cols="40" name="message" id="message1">
</s:textarea><br>
<s:file name="user_post_image" id="user_post_image"/>
<s:select name="msg_visibility" id="msg_visibility" list="#{'public':'Public', 'friends':'Friends','me':'Me only'}" value="public"/>
<s:submit value="Post"/>
</s:form>
同一页面使用的功能
<script type="text/javascript">
function postUserOwnMessages()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (typeof xmlhttp == "undefined")
{
ContentDiv.innerHTML="<h1>XMLHttp cannot be created!</h1>";
}
else{
var message1=document.getElementById('message1').value;
var user_post_image=document.getElementById('user_post_image').value;
var msg_visibility=document.getElementById('msg_visibility').value;
document.getElementById('message1').value="";
var query='ownmessages?message='+message1+'&user_post_image='+user_post_image
+'&msg_visibility='+msg_visibility;
xmlhttp.open("GET",query,true);
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("messages_and_pages").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.send();
}
}
</script>
在行动
public class UserMessages extends ActionSupport {
private String userid;
private String message;
private File user_post_image;
private String user_post_imagePath;
private String user_post_imageContentType;
private String msg_visibility;
public String insert() {
System.out.println(getMessage()
+ " " + getUser_post_image()
+ " " + getUser_post_imageContentType() + " " + getUser_post_imagePath());
return SUCCESS;
}
}
显示以下错误/警告
WARNING: Error setting expression 'user_post_image' with value '[Ljava.lang.String;@1395750'
ognl.MethodFailedException: Method "setUser_post_image" failed for object social.action.UserMessages@765e8c [java.lang.NoSuchMethodException: social.action.UserMessages.setUser_post_image([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1265)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1454)