迁移到JBoss 7后的OGNL索引问题

9rygscc1  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(181)

我目前正在将一个使用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>
vwhgwdsa

vwhgwdsa1#

好的,通过在同一个类中添加下面的函数来修复它。

public Object[] getRowData() { return new Object[0]; }

我假设这解决了问题,因为JBoss 7.1比6.4处理JavaBeans,并且需要更严格的模式遵从性。
查看此线程以获取更多信息。OGNL数组和列表索引

相关问题