我在向Struts 2动作类发送数组参数时遇到问题.我正在使用struts 2.1.8.1.
这是一些示例代码:
public class MyAction extends ActionSupport {
private String[] types;
public String execute() {
return SUCCESS;
}
public String[] getTypes() {
return types;
}
public void setTypes(String[] types) {
this.types = types;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是通过jquery ajax方法发送数组时:
$.ajax({
type: 'POST',
url: 'Myaction.action',
data: {
types: ["this", "is", "a", "test"]
}
});
Run Code Online (Sandbox Code Playgroud)
导致异常发生:
ognl.ParseException: Encountered " "]" "] "" at line 1, column 7.
如何使用jQuery将数组发送到我的Struts2动作类?我需要包含拦截器的某些内容吗?或者jQuery中有一个选项可以删除它吗?
我也遇到了jQuery UI Sortable控件的这个问题,但是我用正则表达式解决了这个问题,删除了"[]"字符.我想避免这种情况,因为这个解决方案困扰着我.我想我可以自己构建字符串,而不是使用对象表示法,但除非你能说服我,否则我想使用对象表示法.
所以我真的更喜欢使用不引人注目的javascript来内联javascript.我觉得使用它要容易得多.
我一直遇到的问题是,我不知道如何获取我想要使用的每个特定元素的数据.
例如:
我有一个列表,我生成以下HTML(这是伪代码)
<%for e in list%>
<a href="#" class="delete"><%=e%></a> <!-- <%= e.id %> ??-->
<%end%>
Run Code Online (Sandbox Code Playgroud)
所以我想将javascript附加到每个将调用ajax帖子的<a>标签上,但是我需要"id"来从后端删除正确的元素.
$('a.delete').click(function() {
// Ajax request using "e.id"
});
Run Code Online (Sandbox Code Playgroud)
我试过的一些事情:
attr方法将ajax请求发送到该URL.(对于POST请求我真的不喜欢这个,但确实有效.rel属性来存储我需要的数据.data属性.(我不知道所有浏览器的可用性,因为我们需要支持IE6 +我不喜欢这个想法.)实现这一目标的最佳做法是什么?
我们最近更改了登录以使用HTTPS,我们遇到了登录问题.
登录后,用户将被重定向到未加密(HTTP)页面.当它到达此页面时,站点将检查用户是否已登录.它会创建一个新会话,并且看起来用户未登录,因此我们的用户被重定向到登录页面.如果用户再次登录,它将起作用.
Cookie不会设置为仅https,但似乎它们不适用于http页面.
有谁知道为什么会发生这种情况.
编辑:
我应该提到显示登录的页面位于不同的URL上.(运行tomcat实例的计算机有一个登录页面,但营销站点在wordpress安装上并使用不同的域).
我无法使用HTTP请求第一种方法来设置cookie,因为默认的Internet Explorer设置会阻止保存会话cookie.
我们有一个相当大的应用程序,具有大量的动态内容.无论如何强制struts使用数据库进行i18n查找而不是属性文件?
如果有人曾经用动态内容做过i18n,我会开放其他方式来解决这个问题.
有没有办法让struts2约定插件使用超类的结果?
我正在尝试创建一个通用的CRUD,如果子类中没有实现,则使用一般结果.这可能吗?
如何使用Struts2将空字符串转换为int.当应用程序遇到没有值的此参数时,例如从空文本字段,它会抛出以下异常.
java.lang.NoSuchMethodException:
com.XXXXXXXXXXXX.setID([Ljava.lang.String;)
Run Code Online (Sandbox Code Playgroud)
其中ID是整数,URL是:
Something.action?ID =&其它= RAWR
有没有办法在不使用Integer(类)的情况下执行此操作?我必须写一个类型转换器吗?
我有一个需要生成xml的服务.目前我使用jaxb和Marshaller使用StringWriter创建xml.
这是我得到的当前输出.
<CompanyName>Bakery é &</CompanyName>
Run Code Online (Sandbox Code Playgroud)
虽然这可能适用于某些Web服务,但我需要转义特殊的unicode字符.令我的xml的服务需要有这样的服务:
<CompanyName>Bakery é &</CompanyName>
Run Code Online (Sandbox Code Playgroud)
如果我使用StringEscapeUtils,commons-lang我最终会得到像下面这样的东西.这个也不起作用:
<CompanyName>Bakery &#233; &amp;</CompanyName>
Run Code Online (Sandbox Code Playgroud)
是否有一些Marshaller设置允许我将这些特殊字符编码为十进制值?
java ×4
struts2 ×4
ajax ×2
jquery ×2
axis2 ×1
cookies ×1
http ×1
https ×1
inheritance ×1
javascript ×1
localization ×1
security ×1
tomcat ×1
utf-8 ×1
xml ×1