使用struts显示标记在页面之间导航时发生java错误
在显示标签的页面之间移动时,我遇到以下错误:
Request [/seatreportsubmit] does not contain handler parameter named 'method'. This may be caused by whitespace in the label text.
但是,当我两次单击搜索按钮时,它将移动到下一页
在过去的几天里,我一直在努力解决这个问题。任何帮助都将不胜感激
以下是我的一些代码:
<table width="100%" align="center">
<tr>
<td align="Center">
<input type="button" class="buttonstyle" value="<bean:message key="button.search" />" onclick="searchsubmit();" styleClass="buttonstylebig">
<input type="button" class="buttonstyle" value="<bean:message key="button.reset" />" onclick="clearValues();">
</td>
</tr>
</table>
struts配置:
<action path="/seatreportsubmit"
type="com.ford.ape.seatreport.actionobject.SeatRprtAction"
name="SeatReportForm" scope="request" input="seatreport.details"
validate="true" parameter="method">
<forward name="openSeatDetails" path="seatreport.details" />
<forward name="showSeatDetails" path="seatreport.detailsreport" />
</action>
瓷砖定义:
<definition name="seatreport.details" extends="base.definition">
<put name="body" value="/jsp/SeatReport/SeatVacReport.jsp" />
</definition>
<definition name="seatreport.detailsreport" extends="base.definition">
<put name="body" value="/jsp/SeatReport/SeatVacReportDetailed.jsp" />
</definition>
js:
function searchsubmit()
{
if(search()==true)
{
if(document.forms[0].seatReportType.value=='Summary Report')
{
document.forms[0].seatLocation.value='';
document.forms[0].seatBuilding.value='';
document.forms[0].seatFloor.value='';
document.forms[0].seatType.value='';
document.forms[0].seatStatus.value='';
document.forms[0].seatCompany.value='';
document.forms[0].seatDepartment.value='';
document.forms[0].seatSubDepartment.value='';
document.forms[0].seatLL5.value='';
document.forms[0].seatLL6.value='';
document.forms[0].method.value="loadPage";
document.forms[0].submit();
}
else if(document.forms[0].seatReportType.value=='Detailed Report')
{
document.forms[0].method.value="showSeatRprt";
document.forms[0].submit();
}
}
}
下面是使用的显示标签
<display:table name="requestScope.SeatReportForm.rprtData" id="table" export="true" sort="list" requestURI="/seatreportsubmit.do" pagesize="20" align="center" class="table_main" width="100%">
<display:column width="5%" align="center" class="hidden" media="Excel" title="Request No" headerClass="table_header" >
<%=((SeatRprtVO)table).getSeatNo()%>
</display:column>
<display:column class="label_text" property="seatLocation" title="Location" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="seatBuilding" title="Building" headerClass="table_header" width="3%" align="center"/>
<display:column class="label_text" property="seatFloor" title="Floor" headerClass="table_header" width="4%" align="center"/>
<display:column class="label_text" property="seatNo" title="Seat No" headerClass="table_header" width="4%" align="center"/>
<display:column class="label_text" property="seatType" title="Seat Type" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="seatStatus" title="Seat Status" headerClass="table_header" width="7%" align="center"/>
<%-- <display:column class="label_text" property="seatCategory" title="Seat Category"
headerClass="table_header" width="7%" align="center"/> --%>
<display:column class="label_text" property="cdsID" title="CDSID" headerClass="table_header" width="4%" align="center"/>
<display:column class="label_text" property="firstName" title="First Name" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="lastName" title="Last Name" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="ll6CdsId" title="LL6 CDSID" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="ll5CdsId" title="LL5 CDSID" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="ll4CdsId" title="LL4 CDSID" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="employeeType" title="Employee Type" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="company" title="Company" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="department" title="Department" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="subDepartment" title="Sub-Department" headerClass="table_header" width="7%" align="center"/>
<display:column class="label_text" property="region" title="Region" headerClass="table_header" width="7%" align="center"/>
<display:setProperty name="export.xls.filename" value="rprtData.xls"/>
<display:setProperty name="css.tr.even" value="row1" />
<display:setProperty name="css.tr.odd" value="row2" />
<display:setProperty name="paging.banner.placement" value="bottom" />
<display:setProperty name="basic.msg.empty_list" value="No Records Found" />
</display:table>
# 1 楼答案
您收到的错误消息不言而喻:您缺少
method
参数从您的代码来看,您似乎在使用DispatchAction。这种类型的Struts操作包含一系列“个性化的
execute
方法”,并使用请求参数来确定调用哪个方法。在您的例子中,请求参数被称为method
:这必须出现在对您的操作的所有请求中,否则Struts将不知道调用什么方法
我知道你已经有了两个方法,分别是
loadPage
和showSeatRprt
。还有其他的吗?有接收寻呼请求的吗在页面之间导航时,display标记从其
requestURI
参数(在您的例子中是requestURI="/seatreportsubmit.do"
)开始创建正确的请求URL。我认为这就是缺少method
参数的地方尝试在Action类中添加一个
handlePaging
方法,然后将display标记的requestURI更改为如下内容:requestURI="/seatreportsubmit.do?method=handlePaging"
并查看在浏览页面时它是否获得控制权# 2 楼答案
谢谢你的回复。。我想我的问题解决了。。。问题是在查询字符串中传递了大量来自请求页面的数据。。。由于查询字符串超过了get请求允许的长度,因此方法='showSeatRprt'稍后会追加到查询字符串中。由于查询字符串被截断,分页无法找到参数方法
因此它显示了相应的信息。。。现在工作正常了