mestanza
mestanza

Reputation: 1

Cannot find bean under name segments

I'm working now with Struts, but I have some problems with the beans.

I have this message:

javax.servlet.jsp.JspException: Cannot find bean under name segments

Struts Config:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config SYSTEM
"dtds/struts-config_1_3.dtd">
<struts-config>
    <form-beans>
        <form-bean
            name="loginForm"
            type="com.un23.security.filters.LoginForm"/>
        <form-bean name="codeForm" type="com.alodiga.sisac.plans.action.code.CodeForm"/>
        <form-bean name="costListForm" type="com.alodiga.sisac.plans.action.costList.CostListForm" />
        <form-bean name="didRentForm" type="com.alodiga.sisac.plans.action.didRent.DidRentForm"/>
        <form-bean name="discountForm" type="com.alodiga.sisac.plans.action.discount.DiscountForm"/>
        <form-bean name="dnForm" type="com.alodiga.sisac.plans.action.dn.DnForm"/>
        <form-bean name="favoriteCountryForm" type="com.alodiga.sisac.plans.action.favoriteCountry.FavoriteCountryForm"/>
        <form-bean name="importCostListForm" type="com.alodiga.sisac.plans.action.costList.ImportCostListForm" />
        <form-bean name="importDidForm" type="com.sg123.actions.did.ImportDidForm"/>
        <form-bean name="importDidRentForm" type="com.alodiga.sisac.plans.action.didRent.ImportDidRentForm"/>
        <form-bean name="importDnForm" type="com.alodiga.sisac.plans.action.dn.ImportDnForm"/>
        <form-bean name="importEquipmentInstanceForm" type="com.sg123.actions.equipmentInstance.ImportEquipmentInstanceForm"/>
        <form-bean name="importFavoriteCountryForm" type="com.alodiga.sisac.plans.action.favoriteCountry.ImportFavoriteCountryForm"/>
        <form-bean name="importTerminationPriceListForm" type="com.alodiga.sisac.plans.action.terminationPriceList.ImportTerminationPriceListForm" />
        <form-bean name="importOriginationPriceListForm" type="com.alodiga.sisac.plans.action.originationPriceList.ImportOriginationPriceListForm" />
        <form-bean name="originationPriceListForm" type="com.alodiga.sisac.plans.action.originationPriceList.OriginationPriceListForm" />
        <form-bean name="planForm" type="com.alodiga.sisac.plans.action.plan.PlanForm" />
        
        <form-bean name="priceListId" type="com.alodiga.sisac.plans.action.originationPriceListAction.priceListId" />
        
        <form-bean name="promotionForm" type="com.alodiga.sisac.plans.action.promotion.PromotionForm"/>
        <form-bean name="terminationPriceListForm"  type="com.alodiga.sisac.plans.action.terminationPriceList.TerminationPriceListForm" />
        <form-bean name="terminationPriceForm"  type="com.alodiga.sisac.plans.action.terminationPriceList.TerminationPriceForm" />
        <form-bean name="scheduleForm" type="com.alodiga.sisac.plans.action.schedule.ScheduleForm"/>
        <form-bean name="serviceEquipmentModelForm" type="com.alodiga.sisac.plans.action.serviceEquipmentModel.ServiceEquipmentModelForm"/>
        <form-bean name="serviceRentForm" type="com.alodiga.sisac.plans.action.serviceRent.ServiceRentForm"/>
    
        <form-bean name="enterprises" type="com.alodiga.sisac.plans.action.didRent.ListDidRent"/>

        
    </form-beans>

    <global-exceptions>
    </global-exceptions>

    <global-forwards>
        <forward name="welcome"  path="/Welcome.do"/>
<!--         Linea agregada por el enterprises -->
        <forward name="enterprises" path="/ListDidRent.do"/>
    </global-forwards>
    
    
    <action-mappings>
         <action
            path="/Login"
            type="com.un23.security.filters.Authenticator" 
            name="loginForm"
            validate="true"
            input="/login.jsp"
            >
            <forward name="success"
                path="/welcome.jsp" />
            <forward name="error"
                path="/WEB-INF/pages/general/generalError.jsp" />
        </action>
        <action path="/Welcome" forward="/welcome.jsp"/>
        <action path="/*/List*" type="com.alodiga.sisac.plans.action.{1}.List{2}Action" name="{1}Form" scope="request" input="/WEB-INF/pages/{1}/list{2}.jsp">
            <forward name="success" path="/WEB-INF/pages/{1}/list{2}.jsp" />
            <forward name="error" path="/WEB-INF/pages/general/generalError.jsp" />
        </action>
        <action path="/*/Add*" type="com.alodiga.sisac.plans.action.{1}.Add{2}Action">
            <forward name="success" path="/WEB-INF/pages/{1}/add{2}.jsp" />
            <forward name="error" path="/WEB-INF/pages/general/generalError.jsp" />
        </action>
        <action path="/*/View*" type="com.alodiga.sisac.plans.action.{1}.View{2}Action">
            <forward name="success" path="/WEB-INF/pages/{1}/view{2}.jsp" />
            <forward name="error" path="/WEB-INF/pages/general/generalError.jsp" />
        </action>
        <action path="/*/Export*" type="com.alodiga.sisac.plans.action.{1}.Export{2}Action" name="listForm" scope="request" input="/WEB-INF/pages/{1}/export{2}.jsp">
            <forward name="success" path="/{1}/List{2}.do" />
            <forward name="error" path="/{1}/List{2}.do" />
        </action>
        <action path="/*/Import*" type="com.alodiga.sisac.plans.action.{1}.Import{2}Action">
            <forward name="success" path="/WEB-INF/pages/{1}/import{2}.jsp" />
            <forward name="error" path="/WEB-INF/pages/{1}/import{2}.jsp" />
        </action>
        <action path="/*/Edit*" type="com.alodiga.sisac.plans.action.{1}.Edit{2}Action">
            <forward name="success" path="/WEB-INF/pages/{1}/edit{2}.jsp" />
            <forward name="error" path="/WEB-INF/pages/general/generalError.jsp" />
            <forward name="error2" path="/{1}/List{2}.do" />
        </action>

        <action path="/*/SaveAdd*" type="com.alodiga.sisac.plans.action.{1}.Save{2}Action" name="{1}Form" scope="session" input="/WEB-INF/pages/{1}/add{2}.jsp">
            <forward name="success"  path="/{1}/List{2}.do" />
            <forward name="error"  path="/WEB-INF/pages/general/generalError.jsp" />
            <forward name="error2"  path="/{1}/Add{2}.do" />
            <forward name="jsp" path="/WEB-INF/pages/{1}/add{2}.jsp" />
            <forward name="jspEdit" path="/WEB-INF/pages/{1}/edit{2}.jsp" />
            <forward name="edit"  path="/{1}/Edit{2}.do" />
        </action>

        <action path="/*/SaveEdit*" type="com.alodiga.sisac.plans.action.{1}.Save{2}Action" name="{1}Form" scope="session" input="/WEB-INF/pages/{1}/edit{2}.jsp">
            <forward name="success" path="/{1}/List{2}.do" />
            <forward name="error" path="/WEB-INF/pages/general/generalError.jsp" />
            <forward name="edit"  path="/{1}/Edit{2}.do" />
        </action>

        <action path="/*/SaveImport*" type="com.alodiga.sisac.plans.action.{1}.SaveImport{2}Action" name="import{2}Form" scope="session" input="/WEB-INF/pages/{1}/edit{2}.jsp">
            <forward name="success" path="/{1}/List{2}.do" />
            <forward name="error" path="/WEB-INF/pages/{1}/import{2}.jsp" />
            <forward name="fail" path="/{1}/Import{2}.do" />
        </action>
        <action path="/*/Finalize*" type="com.alodiga.sisac.plans.action.{1}.Finalize{2}Action" scope="session" input="/WEB-INF/pages/{1}/list{2}.jsp">
            <forward name="success" path="/{1}/List{2}.do" />
            <forward name="error" path="/WEB-INF/pages/general/generalError.jsp" />
        </action>

        <action path="/*/Delete*" type="com.alodiga.sisac.plans.actions.{1}.Batch{2}Action" name="listForm" scope="request" input="/WEB-INF/pages/{1}/list{2}.jsp">
            <forward name="success" path="/{1}/List{2}.do" />
            <forward name="error" path="/{1}/List{2}.do" />
        </action>

        <action path="/*/Enable*" type="com.alodiga.sisac.plans.action.{1}.Batch{2}Action" name="listForm" scope="request" input="/WEB-INF/pages/{1}/list{2}.jsp">
            <forward name="success" path="/{1}/List{2}.do" />
            <forward name="error" path="/{1}/List{2}.do" />
        </action>

        <action path="/*/Disable*"  type="com.alodiga.sisac.plans.action.{1}.Batch{2}Action" name="listForm" scope="request" input="/WEB-INF/pages/{1}/list{2}.jsp">
            <forward name="success" path="/{1}/List{2}.do" />
            <forward name="error" path="/{1}/List{2}.do" />
        </action>

        <action path="/reloadCache/ReloadCache"  type="com.alodiga.sisac.plans.action.reloadCache.ReloadCacheAction" scope="request" input="/WEB-INF/pages/reloadCache/reloadCache.jsp">
            <forward name="success" path="/WEB-INF/pages/reloadCache/reloadCache.jsp" />
            <forward name="error" path="/WEB-INF/pages/reloadCache/reloadCache.jsp" />
        </action>
        <action name="planForm" path="/*/ChangePlanAsDefault" scope="request" type="com.alodiga.sisac.plans.action.plan.ChangePlanAsDefaultAction">
            <forward name="success" path="/plan/ListPlan.do" />
            <forward name="error" path="/plan/ListPlan.do" />
        </action>

    </action-mappings>

    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

    <message-resources parameter=""/>
    
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
        <set-property property="moduleAware" value="true" />
    </plug-in>
    <!-- ========================= Validator plugin ================================= -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
      <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
</struts-config>

My JSP:

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<tiles:insert page="/WEB-INF/layouts/rightLayout.jsp">
    <tiles:put name="html-headers" type="String">
        <script type="text/javascript" src="<%= request.getContextPath()%>/js/ajax/utilsPlan.js"></script>
    </tiles:put>
    <tiles:put name="body" type="String">
        <div id="contenido">
            <div class="ruta">
                <p><a target="_parent" href="<%= request.getContextPath()%>/Welcome.do">Módulo de Planes</a> &gt; Números de Acceso</p>
            </div>
            <p>&nbsp;</p>
            <table width="31%" border="0" cellpadding="0" cellspacing="1"
                   class="tbltitcat">
                <tr>
                    <td width="40%" class="tdtitcat">Números de Acceso</td>
                </tr>
            </table>
            <logic:present name="errorMsgs"><div class="menserror"><bean:write name="errorMsgs" /></div></logic:present>
            <logic:present name="successMsgs"><div class="mensexito"><bean:write name="successMsgs" /></div></logic:present>
            <logic:present name="infoMsgs"><div class="mensinfo"><bean:write name="infoMsgs" /></div></logic:present>
            <html:form action="/dn/SaveImportDn" styleId="dnForm" method="POST" enctype="multipart/form-data">
                <table width="100%" border="0" cellspacing="1" cellpadding="0">
                    <tr>
                        <td class="tdtit">Empresa</td>
                        <td>
                            <html:select styleId="enterpriseId" property="enterpriseId" styleClass="inputcampotxt" onchange="showSegments();">
                                <html:options collection="enterprises" property="id" labelProperty="name" />
                            </html:select>
                        </td>
                    </tr>
                    <tr>
                        <td width="30%" class="tdtit">Segmento</td>
                        <td>
                            <div id="segmentsDiv">
                                <html:select styleId="segmentId" property="segmentId" styleClass="inputcampotxt" onchange="showServicesBySegment();">
                                    <html:options collection="segments" property="id" labelProperty="name"/>
                                </html:select>
                            </div>
                            <span class="menstxterror"><html:errors property="segmentId" /></span>
                        </td>
                    </tr>
                    <tr>
                        <td class="tdtit">Servicio</td>
                        <td>
                            <div id="servicesDiv">
                                <html:select styleId="serviceId" property="serviceId" styleClass="inputcampotxt">
                                    <html:options collection="services" property="id" labelProperty="name"/>
                                </html:select>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td width="30%" class="tdtit">Archivo Excel *</td>
                        <td><html:file property="xlsFile" styleClass="inputcampotxt" size="40" /></td>
                    </tr>
                    <tr>
                        <td colspan="2">
                        <input name="segments" type="submit" class="button" alt="boton" value="Aceptar"/></td>
                    </tr>
                </table>
            </html:form>
        </div>
        <div class="contenidofin">&nbsp;</div>
    </tiles:put>
</tiles:insert>

Upvotes: 0

Views: 6273

Answers (1)

Roman C
Roman C

Reputation: 1

The value of segments is not found in any scope on JSP page. It could be if you forget to initialize the value before returning this JSP from the action, or you access JSP directly, or you have validation errors and configured this JSP as an input. In the last case you should initialize the collection inside the validate() method of the form.

There's another way to supply options for html:select via html:optionsCollection.

<html:optionsCollection property="segments" label="name" value="id" />

Upvotes: 2

Related Questions