我有一个带有各种控制器的JavaSpringMVC项目。这些控制器具有添加、编辑和删除配置的功能。这些不同控制器的jsp文件几乎相同(只有参数的数量、页面的标题等不同)。
例如,我有一个jsp文件为服务器添加证书,其中包含供最终用户提及证书名称和位置的选项。另一个jsp文件是添加服务器详细信息,询问最终用户服务器名称、操作系统等。
所有这些jsp文件在submit按钮上都有类似的功能,在这里添加代码-
<div class="submitButton center">
<input type="button" class="center actionButton" name="submitButton" value="${saveLbl}" id="submitButtonId" onclick="return submitForm('addForm', '${formAction}', '');"/>
<c:if test="${repCertificateEntityForm.controllerModel.formType == 'ADD'}">
<span class="padLeftMedium"></span>
<input type="button" class="actionButton" name="saveButton" value="Save and Add Another" id="saveAndAddAnotherButtonId" onclick="return submitForm('addForm', '${saveAndAddAnotherUrl}', '');"></input>
</c:if>
<c:if test="${repCertificateEntityForm.controllerModel.formType == 'EDIT' && showDelete}">
<span class="padLeftMedium"></span>
<input type="button" class="actionButton" name="deleteButton" value="${deleteLbl}" id="deleteButtonId" onclick="return submitForm('addForm', '${deleteUrl}', 'Delete the Certificate?');"></input>
</c:if>
<span class="padLeftMedium"></span>
<input type="button" class="actionButton" name="cancelButton" value="Cancel" id="cancelButtonId" onclick="handleGetAction('${returnUrl}');" ></input>
</div>
我所有的jsp文件都有这样的通用代码,唯一的区别是表单名(在本例中是repcertificateentityform)。我们是否可以有一个jsp文件来包含这个提交按钮代码,而我的所有jsp都会引用这个jsp文件并动态地将表单名传递给它?请建议。
编辑1:
在第一个jsp中,我添加了以下代码,用于调用第二个jsp并传递参数:
<jsp:include page="config.jsp" >
<jsp:param name="formName" value="repCertificateEntityForm" />
</jsp:include>
在config.jsp中,我添加了以下代码(我希望在本节中使用repcertificateentityform值访问param formname)-
<div class="submitButton center">
<input type="button" class="center actionButton" name="submitButton" value="${saveLbl}" id="submitButtonId" onclick="return submitForm('addForm', '${formAction}', '');"/>
<c:if test="${param.formName.controllerModel.formType == 'ADD'}">
<span class="padLeftMedium"></span>
<input type="button" class="actionButton" name="saveButton" value="Save and Add Another" id="saveAndAddAnotherButtonId" onclick="return submitForm('addForm', '${saveAndAddAnotherUrl}', '');"></input>
</c:if>
<span class="padLeftMedium"></span>
<input type="button" class="actionButton" name="cancelButton" value="Cancel" id="cancelButtonId" onclick="handleGetAction('${returnUrl}');" ></input>
</div>
现在,如果我在这个div块中传递repcertificateentityform的硬编码值,一切都正常,但是我希望通过jsp参数来完成,这样表单名就变成动态的。谢谢你。
1条答案
按热度按时间b5lpy0ml1#
你可以用
<jsp:include>
用一个<jsp:param>
.请在此处查看更多详细信息。
另一个选择是jstl的
<c:import>
标记为<c:param>
(比jsp更灵活,包括:请在此处查看更多详细信息。
或者,可以使用jsp标记文件。
请在此处查看更多详细信息。
注意,我上面的例子只是,例子,所以我用
repCertificateEntityForm
作为窗体的名称。在代码中使用<jsp:include>
,repCertificateEntityForm
是一个具有属性的对象,您正在尝试检索这些属性。但参数只能是字符串,因此很可能会出现以下异常:javax.el.propertynotfoundexception:在类型java.lang.string上找不到属性“controllermodel”
或者类似的东西。
您正在测试一个窗体类型,如
ADD
,因此您可以在第一个jsp中这样更改代码:然后,在config.jsp中,可以使用以下工具进行测试:
需要注意的另一点是,包含的jsp与当前jsp包含在同一上下文中,因此它可以访问范围属性,例如请求属性。如果你的
repCertificateEntityForm
在范围中添加了request.setAttribute("repCertificateEntityForm", form);
然后config.jsp可以直接访问它,因为它将在作用域中。在这种情况下,您可以将第一个jsp更改为只包含以下内容:在config.jsp中,您可以检索整个表单对象,并保持测试如下:
最后,我强烈建议您阅读一些教程或文档,以便更好地了解应用程序中的工作方式。