我目前正在将一个使用Struts2/OGNL的遗留系统从JBoss 6.1迁移到JBoss 7.4,在JBoss 7.4中,使用OGNL进行对象索引时出现了一个问题。
以下函数导致JBoss 7.4中的表达式设置错误,而这在旧版本中不会发生:
public Object getRowData(int index) {
while(index>=rows.size()){
try {
addRow(recordClass.newInstance(), false);
} catch (Exception e) {
logger.error("Error Grid getRowData",e);
e.printStackTrace();
}
}
return rows.get(index).getValue();
}
在JBoss 7中由OGNL调用时,会抛出类似的错误,如下所示:
[com.opensymphony.xwork2.ognl.OgnlValueStack] (default task-1) Error setting expression 'form.internalCodeGrid.rowData[7].createBy' with value '[Ljava.lang.String;@454e1cae': ognl.NoSuchPropertyException: com.cnt.tdc.tag.grid.Grid.rowData
基本上OGNL无法获取索引元素。这个问题在JBoss 6.1中不会发生。
在JBoss 6.1中,我可以通过重命名/删除getRowData()函数来复制完全相同的问题,直到出现相同的问题日志错误。
任何帮助都将不胜感激。
使用的JAR和属性文件:
- 支柱2-核心-2.3.15.1
- 奥格尼-3.0.6
- struts.xml(完全相同)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="applicationResource,cnt" />
<constant name="struts.multipart.maxSize" value="50000000" />
<constant name="struts.action.excludePattern" value="/auth/*"/>
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="loginInterceptor"
class="com.cnt.interceptor.LoginInterceptor" />
<interceptor name="accessRightInterceptor"
class="com.cnt.interceptor.AccessRightInterceptor" />
<interceptor name="requestParamtersInterceptor"
class="com.cnt.interceptor.RequestParametersInterceptor" />
<interceptor-stack name="mainStack">
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="accessRightInterceptor"/>
<interceptor-ref name="requestParamtersInterceptor"/>
<interceptor-ref name="defaultStack">
<param name="validation.excludeMethods">
ssoLogin,execute,logout,input,back,cancel,create,edit,copy,newRegistration,copyPrevious,
retrieveWinsData,refreshWinsSubData,downloadTemplate,downloadUpdateTemplate,
downloadCodeTable,showDetail,importHandheld,
archive,viewReserveHistory,getSuggestSeq,viewSchemeDetail,adminDelete,viewImage,
popupSourceType,popupVisitorType,popupEbadgeStatus,popupMultipleProject,popupEuConsentStatus,popupEuConsentStatusSelect,popupSourceTypeSelect,
popupVisitorTypeSelect,popupMultipleProjectSelect,popupEbadgeStatusSelect,deleteRule,deleteRow,addNewRow,
popupSubProject,popupSubProjectSelect,popupHallNo,popupHallNoSelect,
popupProductSection, popupProductSectionSelect, popupBoothNo, popupBoothNoSelect,
popupCountry, popupCountrySelect, popupCountryType, popupCountryTypeSelect, popupCategoryCode, popupCategoryCodeSelect,
downloadAllocation,backScenario, redirectEditRule, reportDelete, getData,redirectEditScenario,
popupInternalCode,popupProvince,popupCity,popupInternalCodeSelect,popupProvinceSelect,popupCitySelect,
popupOffice,popupRegion,popupPostalZone,popupOfficeSelect,popupRegionSelect,popupPostalZoneSelect,
popupMarketType,popupMarketTypeSelect,popupProject,changePage,popupYear,popupYearSelect,
downloadCategoryCode, confirmImport, popupScannerID, popupScannerIDSelect,
popupScannerId, popupScannerIdSelect, popupScannerIdSearch, popupScannerIdReset,
viewVisitorTypeDetail,popupActionType,popupKioskNo,selectDefaultKiosk, deleteKiosk,
selectEvent, unselectEvent, searchEvent, popupNationality, popupNationalitySelect, verify,
exportBlacklistPassport,listBlacklistPassportReg,blacklistReg, deleteRegistrationCategory,
downloadStatusReport,downloadErrorLog,sortByColumn,
popupPhotoEditor,uploadPhoto,savePhoto,deletePhoto,addPhoto,downloadPhoto,refresh,
saveBlacklistRemarks,searchBlackListPassportRecords,searchHistoryRecords,addBlacklistHistory,exportBlacklistHistory,
popupDMDisclaimer,popupDMDisclaimerSelect,popupEbadgeStatus,popupEbadgeStatusSelect,popupPrintedBadge,popupPrintedBadgeSelect
</param>
<param name="workflow.excludeMethods">input,back,cancel</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mainStack"/>
<global-results>
<result name="login" type="redirectAction">
<param name="namespace">/login</param>
<param name="actionName">login</param>
</result>
<result name="ssoLogin" type="redirectAction">
<param name="namespace">/login</param>
<param name="actionName">login!ssoLogin</param>
</result>
<result name="noAccessRight">/noPermission.jsp</result>
</global-results>
</package>
<include file="config/market-struts.xml"></include>
<include file="config/region-struts.xml"></include>
<include file="config/userRole-struts.xml"></include>
<include file="config/badge-struts.xml"></include>
<include file="report-struts.xml"></include>
<include file="portableVMS-struts.xml"></include>
<include file="monitoring-struts.xml"></include>
<package name="login" extends="default" namespace="/login">
<action name="login!*"
class="com.cnt.tdc.action.UserLoginAction"
method="{1}">
<result name="success" type="redirectAction">
<param name="namespace">/login</param>
<param name="actionName">sitemap!</param>
</result>
<result name="monitoring" type="redirectAction">
<param name="namespace">/onsiteSrv</param>
<param name="actionName">monitor!</param>
</result>
<result name="login_jsp" >/login.jsp</result>
<result name="logout_jsp" >/logout.jsp</result>
<result name="input" >/login.jsp</result>
</action>
<action name="sitemap!*"
class="com.cnt.tdc.action.SitemapAction"
method="{1}">
<result name="success">/sitemap.jsp</result>
<result name="input">/sitemap.jsp</result>
</action>
</package>
<package name="registration" extends="default" namespace="/registration">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainRegistrationAction"
method="{1}">
<result name="success">/maintainRegistration.jsp</result>
<result name="input" >/maintainRegistration.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/registration</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/registration</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
<result name="popupPhotoEditor">/visitorPhotoEditor.jsp</result>
</action>
<!-- 44246 -->
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireRegistrationAction"
method="{1}">
<result name="success">/enquireRegistration.jsp</result>
<result name="input" >/enquireRegistration.jsp</result>
<result name="editRecord" type="redirectAction">
<param name="namespace">/registration</param>
<param name="actionName">maintain!edit</param>
<param name="form.recordNo">${editRecord}</param>
</result>
<result name="popupSourceType">/selectSourceType.jsp</result>
<result name="popupVisitorType">/selectVisitorType.jsp</result>
<result name="popupCountryType">/selectCountryType.jsp</result>
<result name="popupCountry">/selectCountry.jsp</result>
<result name="popupMultipleProject">/selectMultipleProject.jsp</result>
<result name="popupInternalCode">/selectInternalCode.jsp</result>
<result name="popupAddressKeyword">/selectAddressKeyword.jsp</result>
<result name="popupEbadgeStatus">/selectEbadgeStatus.jsp</result>
<result name="popupEuConsentStatus">/selectEuConsentStatus.jsp</result>
</action>
<action name="import!*"
class="com.cnt.tdc.action.ImportRegistrationAction"
method="{1}">
<result name="success">/importRegistration.jsp</result>
<result name="input">/importRegistration.jsp</result>
</action>
<action name="importDates!*"
class="com.cnt.tdc.action.ImportDatesRegistrationAction"
method="{1}">
<result name="success">/importDatesRegistration.jsp</result>
<result name="input">/importDatesRegistration.jsp</result>
</action>
<action name="maintainNobMapping!*"
class="com.cnt.tdc.action.MaintainNobMappingAction"
method="{1}">
<result name="success">/maintainNobMapping.jsp</result>
<result name="input">/maintainNobMapping.jsp</result>
</action>
<action name="reserve!*"
class="com.cnt.tdc.action.ReserveRegistrationAction"
method="{1}">
<result name="success">/reserveRegistration.jsp</result>
<result name="input">/reserveRegistration.jsp</result>
<result name="viewHistory">/viewReserveHistory.jsp</result>
</action>
<action name="delete!*"
class="com.cnt.tdc.action.DeleteRegistrationAction"
method="{1}">
<result name="success">/deleteRegistration.jsp</result>
<result name="input">/deleteRegistration.jsp</result>
</action>
<action name="verify!*"
class="com.cnt.tdc.action.VerifyPassportAction"
method="{1}">
<result name="success">/verifyPassport.jsp</result>
<result name="input">/verifyPassport.jsp</result>
<result name="popupSourceType">/report/selectSourceType.jsp</result>
<result name="popupVisitorType">/report/selectVisitorType.jsp</result>
<result name="popupCountry">/report/selectCountry.jsp</result>
<result name="popupProvince">/report/selectProvinceSingleColumn.jsp</result>
<result name="popupCity">/report/selectCitySingleColumn.jsp</result>
<result name="popupInternalCode">/report/selectInternalCode.jsp</result>
<result name="popupNationality">/report/selectNationality.jsp</result>
</action>
</package>
<package name="department" extends="default" namespace="/department">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainDepartmentAction"
method="{1}">
<result name="success">/maintainDepartment.jsp</result>
<result name="input" >/maintainDepartment.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/department</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
</result>
<result name="deleteSuccess" type="redirect">/department/enquire!</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/department</param>
<param name="actionName">enquire</param>
<param name="form.timeKey">${timeKey}</param>
</result>
</action>
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireDepartmentAction"
method="{1}">
<result name="success">/enquireDepartment.jsp</result>
<result name="input" >/enquireDepartment.jsp</result>
</action>
</package>
<package name="user" extends="default" namespace="/user">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainUserAction"
method="{1}">
<result name="success">/maintainUser.jsp</result>
<result name="input" >/maintainUser.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/user</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
</result>
<result name="deleteSuccess" type="redirect">/user/enquire!</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/user</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
</action>
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireUserAction"
method="{1}">
<result name="success">/enquiryUser.jsp</result>
<result name="input" >/enquiryUser.jsp</result>
</action>
</package>
<package name="event" extends="default" namespace="/event">
<action name="maintainDetail!*"
class="com.cnt.tdc.action.MaintainEventDetailAction"
method="{1}">
<result name="success">/maintainEventDetail.jsp</result>
<result name="input">/maintainEventDetail.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
<result name="crossEvent" type="redirect">/event/maintainCrossEvent</result>
<result name="kioskSetting" type="redirect">/event/maintainKioskSetting</result>
<result name="eventCategoryCode" type="redirect">/event/maintainCategory</result>
<result name="addOnQuestion" type="redirect">/event/maintainAddOnSummary</result>
</action>
<action name="maintainCrossEvent!*"
class="com.cnt.tdc.action.MaintainEventCrossEventAction"
method="{1}">
<result name="success">/maintainEventCrossEvent.jsp</result>
<result name="input">/maintainEventCrossEvent.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
<result name="details" type="redirect">/event/maintainDetail!edit</result>
<result name="kioskSetting" type="redirect">/event/maintainKioskSetting</result>
<result name="eventCategoryCode" type="redirect">/event/maintainCategory</result>
<result name="addOnQuestion" type="redirect">/event/maintainAddOnSummary</result>
</action>
<action name="maintainKioskSetting!*"
class="com.cnt.tdc.action.MaintainEventKioskSettingAction"
method="{1}">
<result name="success">/maintainEventKioskSetting.jsp</result>
<result name="input">/maintainEventKioskSetting.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
<result name="details" type="redirect">/event/maintainDetail!edit</result>
<result name="crossEvent" type="redirect">/event/maintainCrossEvent</result>
<result name="eventCategoryCode" type="redirect">/event/maintainCategory</result>
<result name="addOnQuestion" type="redirect">/event/maintainAddOnSummary</result>
</action>
<action name="maintainCategory!*"
class="com.cnt.tdc.action.MaintainEventCategoryAction"
method="{1}">
<result name="success">/maintainEventCategory.jsp</result>
<result name="input">/maintainEventCategory.jsp</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
<result name="details" type="redirect">/event/maintainDetail!edit</result>
<result name="kioskSetting" type="redirect">/event/maintainKioskSetting</result>
<result name="crossEvent" type="redirect">/event/maintainCrossEvent</result>
<result name="addOnQuestion" type="redirect">/event/maintainAddOnSummary</result>
</action>
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireEventAction"
method="{1}">
<result name="success">/enquireEvent.jsp</result>
<result name="input">/enquireEvent.jsp</result>
</action>
<!-- Phase 2 -->
<action name="maintainAddOnSummary!*"
class="com.cnt.tdc.action.MaintainEventAddOnSummaryAction"
method="{1}">
<result name="success">/maintainEventAddOnSummary.jsp</result>
<result name="input">/maintainEventAddOnSummary.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/event</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
<result name="previewForm" >/previewForm.jsp</result>
<result name="previewTerms" >/previewTerms.jsp</result>
<result name="previewFair">/previewFair.jsp</result>
<result name="previewEvent">/previewEvent.jsp</result>
<result name="details" type="redirect">/event/maintainDetail!edit</result>
<result name="kioskSetting" type="redirect">/event/maintainKioskSetting</result>
<result name="eventCategoryCode" type="redirect">/event/maintainCategory</result>
<result name="crossEvent" type="redirect">/event/maintainCrossEvent</result>
</action>
<action name="maintainAddOnDetail!*"
class="com.cnt.tdc.action.MaintainEventAddOnDetailAction"
method="{1}">
<result name="success">/maintainEventAddOnDetail.jsp</result>
<result name="input">/maintainEventAddOnDetail.jsp</result>
<result name="redirect" type="redirect">/event/maintainAddOnSummary</result>
<result name="summary" type="redirect">/event/maintainAddOnSummary</result>
<result name="details" type="redirect">/event/maintainDetail!edit</result>
<result name="kioskSetting" type="redirect">/event/maintainKioskSetting</result>
<result name="eventCategoryCode" type="redirect">/event/maintainCategory</result>
<result name="crossEvent" type="redirect">/event/maintainCrossEvent</result>
</action>
</package>
<package name="exhibitor" extends="default" namespace="/exhibitor">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainExhibitorAction"
method="{1}">
<result name="success">/maintainExhibitor.jsp</result>
<result name="input" >/maintainExhibitor.jsp</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/exhibitor</param>
<param name="actionName">enquire!</param>
<param name="form.back">true</param>
<param name="form.message">${message}</param>
</result>
<result name="popUp">/viewImage.jsp</result>
<result name="redirectEnquire" type="redirectAction">
<param name="namespace">/exhibitor</param>
<param name="actionName">enquire!</param>
<param name="form.timeKey">${timeKey}</param>
</result>
<result name="popupPhotoEditor">/visitorPhotoEditor.jsp</result>
</action>
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireExhibitorAction"
method="{1}">
<result name="success">/enquireExhibitor.jsp</result>
<result name="input" >//enquireExhibitor.jsp</result>
<result name="editRecord" type="redirectAction">
<param name="namespace">/exhibitor</param>
<param name="actionName">maintain!edit</param>
<param name="form.recordNo">${editRecord}</param>
</result>
<result name="popupEbadgeStatus">/selectEbadgeStatus.jsp</result>
<result name="popupSourceType">/selectSourceType.jsp</result>
<result name="popupVisitorType">/selectVisitorType.jsp</result>
</action>
<action name="import!*"
class="com.cnt.tdc.action.ImportExhibitorAction"
method="{1}">
<result name="success">/importExhibitor.jsp</result>
<result name="input">/importExhibitor.jsp</result>
<result name="viewDetail">/viewSchemeDetail.jsp</result>
</action>
</package>
<package name="image" namespace="/image" extends="default">
<result-types>
<result-type name="imageResult"
class="com.cnt.tdc.CustomImageByteResult" />
</result-types>
<action name="ImageAction!*" class="com.cnt.tdc.action.ImageAction">
<result name="success" type="imageResult">
</result>
<result name="fail">
</result>
</action>
</package>
<package name="handheld" extends="default" namespace="/handheld">
<action name="import!*"
class="com.cnt.tdc.action.ImportHandheldAction"
method="{1}">
<result name="success">/importHandheld.jsp</result>
<result name="input" >/importHandheld.jsp</result>
<result name="redirect" type="redirect">/handheld/enquire</result>
</action>
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireHandheldAction"
method="{1}">
<result name="success">/enquireHandheld.jsp</result>
<result name="input" >/enquireHandheld.jsp</result>
</action>
</package>
<package name="project" extends="default" namespace="/project">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainProjectAction"
method="{1}">
<result name="success">/maintainProject.jsp</result>
<result name="input">/maintainProject.jsp</result>
</action>
</package>
<package name="source" extends="default" namespace="/source">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainSourceTypeAction"
method="{1}">
<result name="success">/maintainSourceType.jsp</result>
<result name="input">/maintainSourceType.jsp</result>
</action>
</package>
<package name="visitor" extends="default" namespace="/visitor">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainVisitorTypeAction"
method="{1}">
<result name="success">/maintainVisitorType.jsp</result>
<result name="input">/maintainVisitorType.jsp</result>
</action>
</package>
<package name="internal" extends="default" namespace="/internal">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainInternalCodeAction"
method="{1}">
<result name="success">/maintainInternalCode.jsp</result>
<result name="input">/maintainInternalCode.jsp</result>
</action>
</package>
<package name="defaultConsentMessage" extends="default" namespace="/defaultConsentMessage">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainDefaultConsentMessageAction"
method="{1}">
<result name="success">/maintainDefaultConsentMessage.jsp</result>
<result name="input">/maintainDefaultConsentMessageInput.jsp</result>
<result name="new" >/maintainDefaultConsentMessageInput.jsp</result>
<result name="edit" >/maintainDefaultConsentMessageInput.jsp</result>
<result name="deleteSuccess" type="redirect">/defaultConsentMessage/maintain!</result>
<result name="redirect" type="redirectAction">
<param name="namespace">/defaultConsentMessage</param>
<param name="actionName">maintain!</param>
<param name="form.back">true</param>
</result>
</action>
</package>
<package name="location" extends="default" namespace="/location">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainLocationAction"
method="{1}">
<result name="success">/maintainLocation.jsp</result>
<result name="input">/maintainLocation.jsp</result>
</action>
</package>
<package name="sysParam" extends="default" namespace="/sysParam">
<action name="maintain!*"
class="com.cnt.tdc.action.MaintainSysParameterAction"
method="{1}">
<result name="success">/maintainSysParameter.jsp</result>
<result name="input">/maintainSysParameter.jsp</result>
</action>
</package>
<package name="vrs" extends="default" namespace="/vrs">
<action name="export!*"
class="com.cnt.tdc.action.ExportVrsDataAction"
method="{1}">
<result name="success">/exportVrsData.jsp</result>
<result name="input">/exportVrsData.jsp</result>
</action>
</package>
<package name="inbox" extends="default" namespace="/inbox">
<action name="enquire!*"
class="com.cnt.tdc.action.InboxAction"
method="{1}">
<result name="success">/inbox.jsp</result>
<result name="input">/inbox.jsp</result>
</action>
</package>
<package name="other" extends="default" namespace="/*">
<action name="*">
<result>/index.jsp</result>
</action>
</package>
<package name="activityLog" extends="default" namespace="/activityLog">
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireActivityLogAction"
method="{1}">
<result name="success">/enquireActivityLog.jsp</result>
<result name="input">/enquireActivityLog.jsp</result>
<result name="popupActionType">/selectActivityActionType.jsp</result>
</action>
</package>
<package name="RandomReferenceNoReportAction" extends="default" namespace="/randomReferenceNo">
<action name="generate!*"
class="com.cnt.tdc.action.report.RandomReferenceNoReportAction"
method="{1}">
<result name="success">/randomReferenceNoReport.jsp</result>
<result name="input">/randomReferenceNoReport.jsp</result>
<result name="popupKioskNo">/monitoring/selectKioskIdWithLocation.jsp</result>
</action>
</package>
<package name="passport" extends="default" namespace="/passport">
<action name="import!*"
class="com.cnt.tdc.action.ImportBlacklistPassportAction"
method="{1}">
<result name="success">/importBlacklistPassport.jsp</result>
<result name="input">/importBlacklistPassport.jsp</result>
</action>
<action name="enquire!*"
class="com.cnt.tdc.action.EnquireBlacklistPassportAction"
method="{1}">
<result name="success">/enquireBlacklistPassport.jsp</result>
<result name="input">/enquireBlacklistPassport.jsp</result>
<result name="popupNationality">/selectNationalitySearch.jsp</result>
</action>
<action name="delete!*"
class="com.cnt.tdc.action.DeleteBlacklistPassportAction"
method="{1}">
<result name="success">/deleteBlacklistPassport.jsp</result>
<result name="input">/deleteBlacklistPassport.jsp</result>
</action>
</package>
</struts>
1条答案
按热度按时间vwhgwdsa1#
好的,通过在同一个类中添加下面的函数来修复它。
我假设这解决了问题,因为JBoss 7.1比6.4处理JavaBeans,并且需要更严格的模式遵从性。
查看此线程以获取更多信息。OGNL数组和列表索引