我正在使用JAXB将我的数据序列化为XML.类代码很简单,如下所示.我想生成包含CDATA块的XML,用于某些Args的值.例如,当前代码生成此XML:
<command>
<args>
<arg name="test_id">1234</arg>
<arg name="source"><html>EMAIL</html></arg>
</args>
</command>
Run Code Online (Sandbox Code Playgroud)
我想在CDATA中包装"source"arg,使其如下所示:
<command>
<args>
<arg name="test_id">1234</arg>
<arg name="source"><[![CDATA[<html>EMAIL</html>]]></arg>
</args>
</command>
Run Code Online (Sandbox Code Playgroud)
我怎样才能在下面的代码中实现这一点?
@XmlRootElement(name="command")
public class Command {
@XmlElementWrapper(name="args")
protected List<Arg> arg;
}
@XmlRootElement(name="arg")
public class Arg {
@XmlAttribute
public String name;
@XmlValue
public String value;
public Arg() {};
static Arg make(final String name, final String value) {
Arg a = new Arg();
a.name=name; a.value=value;
return a; }
}
Run Code Online (Sandbox Code Playgroud) 我正在使用在Tomcat Apache 6.0环境中运行的Spring 3.0开发RESTful服务.Spring DispatcherServlet配置为"/ spring/*".Spring servlet处理多个客户端,并在应用程序中有许多控制器.我正在为REST服务添加一个新的Controller.我希望我的所有控制器类都有一个标识前缀,如"ws"(Web服务),以便资源的完整URL如下所示:
http://<server>:<port>/<context>/spring/ws/service1
我在Spring注释中找到的唯一方法是使用@RequestMapping,如下所示:
@Controller
@RequestMapping("/ws/service1")
public class Service1 {
@RequestMapping(method=RequestMethod.GET)
@ResponseBody
public String getHtml() { ... }
....
}
Run Code Online (Sandbox Code Playgroud)
但由于我有几十个类,我不想在每个类中加上"/ ws"前缀.因此,如果另一个开发人员添加新服务,他不必记住放置此前缀,如果我们决定将前缀名称从"/ ws"更改为其他内容,我不必更改所有文件.我发现@RequestMapping注释仅适用于方法或类,而不适用于包级别.
有什么方法可以配置我的所有REST控制器都使用前缀访问?
请注意,我无法更改Spring servlet的web.xml URL映射,因为还有其他控制器使用该URL运行.