将值从 MenuItemTag 传递到 .jsp

Passing a value from MenuItemTag to .jsp

情况:

我有一个带有菜单和菜单项的 .jsp,它显示在应用程序中的每个其他 .jsp 上。 此时,其中三个 MenuItem 分别将用户重定向到不同的 .jsp 页面。但这很愚蠢,因为那些 .jsp 和 Action class 几乎相同。所以我想做的是:

代码:

JSP-包含 Menu Widget:

代码的页面
...
<ui:submenu name="Chapter A">
    <ui:menuitem link="/ThisPage.do">Printoption A</ui:menuitem>
    <ui:menuitem link="/ThisPage.do">Printoption B</ui:menuitem>
    <ui:menuitem link="/ThisPage.do">Printoption C</ui:menuitem>
    ...
</ui:submenu> 
<ui:submenu name="Chapter B">
    ...
</ui:submenu>
...

JSP-带有打印按钮的页面 ('ThisPage'):

<html>
<div>
...
<c:set var="mode" value="${PageData.fields.mode}" />
<c:set var="title" value="${val:iif(mode=='1','Option1',val:iif(mode=='2','Option2','Option3'))}" />
...
<body>
    <html-el:form action="/Print" method="post" >
    <h1>Print ${title}</h1>
    <html-el:hidden property="field(mode)"/>
...
(assorted fields to filter output data)
...
        <html-el:submit property="event(printPdf)" styleClass="button" style="width=125">Print to .PDF</html-el:submit>
    <c:if test="${(mode=='3')}">
        <html-el:submit property="event(printWord)" styleClass="button" style="width=125">Print to .DOC</html-el:submit>
    </c:if>
...
</div>
</body>
</html>

操作 class ('Print'):

...
public ActionForward onPostPrintPdf(ActionMapping mapping, ActionForm form, 
            HttpServletRequest request, HttpServletResponse response) 
            throws Exception 
{
    ...
    request.setCharacterEncoding("UTF-8");
    Connection connection = null;
    PageData inForm = ActionUtils.getInputForm(mapping, request, form);
    String mode = (String)inForm.getField("mode");
    ...
    (assorted variables, field/variable validation, export to Jasper Report, etc.)
    ...
    return ActionUtils.getInputRedirect(mapping, request, inForm);
}
...
(more actions for more printing options)
...

我的苦恼:

我是 Struts(和 java)的新手,我已经将所有内容(在我的知识范围内)设置为 'receive' 参数值并将其放入 'mode' 变量。 但是我在 'sending' 这个值上苦苦挣扎,因为我不能在 MenuItems 中使用像 'onclick' 这样的东西。

此时我真的不知道如何在单击其中一个菜单项时将值传递给 'mode'。

感谢Jimmy指引我正确的方向! 这是适用于我的代码的解决方案:

...
<ui:submenu name="Chapter A">
    <ui:menuitem link="/ThisPage.do?field(mode)=optionA">Printoption A</ui:menuitem>
    <ui:menuitem link="/ThisPage.do?field(mode)=optionB">Printoption B</ui:menuitem>
    <ui:menuitem link="/ThisPage.do?field(mode)=optionC">Printoption C</ui:menuitem>
    ...
</ui:submenu> 
<ui:submenu name="Chapter B">
    ...
</ui:submenu>
...