在STRUTS中转发

时间:2009-10-27 15:17:56

标签: struts

我通过给予

来转发行动
<forward  name="sample" path="/sample.do?button=default" />

我想在路径中再添加一个属性,我使用了:

<forward  name="sample" path="/sample.do?button=default&value=text" />

...我正在获取org.xml.sax.SAXParseException

任何解决方案吗?

3 个答案:

答案 0 :(得分:2)

正如Omnipresent和Shashi已经说过的那样,你必须将&符号编码为&amp;,以便forward定义如下所示:

<forward  name="sample" path="/sample.do?button=default&amp;value=text" />

但是,struts-config.xml中定义的网址已被冻结,如果您需要动态更改值或添加其他参数,则可以通过根据转发创建新的ActionForward来实现你来自mapping.findForward()

ActionForward forward = mapping.findForward("sample");
StringBuilder path = new StringBuilder(forward.getPath());
path.append("?id=");
path.append(someobject.getId());
path.append("&value=");
path.append(getValue());
return new ActionForward(path.toString());

答案 1 :(得分:1)

<forward  name="sample" path="/sample.do?button=default&value=text" />

您可以在前进中传递多个参数。 但你必须使用'&amp; amp;'而不是'&amp;'。

为了严格准确,解析器处理程序应扫描缓冲区中的&符号(&amp;);和左角括号字符(<),并用字符串&amp; amp;替换它们。或者&amp; lt;,视情况而定。

因此,转发声明将为

<forward  name="sample" path="/sample.do?button=default&amp;amp;value=text" />

答案 2 :(得分:0)

你不能使用'&amp;'在struts-config.xml中

value =文本应该从您的操作中传递...而不是您尝试传递它的方式(在url中)。

您的转发标记必须与某个操作相关联。该动作应该有一个名为value的getter,它返回'text'。

sample.do将以何种方式访问​​该varable。