将值从 MenuItemTag 传递到 .jsp
Passing a value from MenuItemTag to .jsp
情况:
我有一个带有菜单和菜单项的 .jsp,它显示在应用程序中的每个其他 .jsp 上。
此时,其中三个 MenuItem 分别将用户重定向到不同的 .jsp 页面。但这很愚蠢,因为那些 .jsp 和 Action class 几乎相同。所以我想做的是:
- 使这 3 个不同 menuitems/links 重定向到同一页面
- 点击 link/MenuItem
时发送参数
- 取决于 'mode' 的值:
- 更改 .jsp 的布局
- 在动作中更改 onPostPrintx-actions 中的变量值 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>
...
情况:
我有一个带有菜单和菜单项的 .jsp,它显示在应用程序中的每个其他 .jsp 上。 此时,其中三个 MenuItem 分别将用户重定向到不同的 .jsp 页面。但这很愚蠢,因为那些 .jsp 和 Action class 几乎相同。所以我想做的是:
- 使这 3 个不同 menuitems/links 重定向到同一页面
- 点击 link/MenuItem 时发送参数
- 取决于 'mode' 的值:
- 更改 .jsp 的布局
- 在动作中更改 onPostPrintx-actions 中的变量值 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>
...