valid tutorial requestmapping puede para método mvc formulario español escritura encontrar ejemplo configurar commandname atributo anotaciones spring

tutorial - spring mvc español



No se pudo resolver el marcador de posición de la propiedad Spring (6)

Tengo mi configuración:

<context:property-placeholder location="classpath:idm.properties" /> <bean id="idmPropertyHolder" class="fi.utu.resurssitilaus.idm.IdmPropertyHolder"> <property name="url" value="${idm.url}" /> <property name="user" value="${idm.user}" /> <property name="password" value="${idm.password}" /> <property name="proxyHost" value="${http.proxyHost}" /> <property name="proxyPort" value="${http.proxyPort}" /> </bean>

Me sale el error

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name ''idmPropertyHolder'' defined in ServletContext resource [/WEB-INF/idm-config.xml]: Could not resolve placeholder ''idm.url'' at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:272) at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:75) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:640) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:615) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:405) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:514) at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1288) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1473) at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:824) at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:350) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:196) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619) 24.1.2011 9:19:05 org.apache.catalina.core.ApplicationContext log INFO: Closing Spring root WebApplicationContext 24.1.2011 9:19:05 org.apache.catalina.core.ApplicationContext log INFO: Shutting down log4j

Sé que este archivo de propiedades podría faltar, pero lo tengo en mi ruta de clases correcta. ¿Lo que falta?

Mi web.xml:

<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/base-config.xml /WEB-INF/idm-config.xml /WEB-INF/ldap-config.xml /WEB-INF/sec-config.xml </param-value> </context-param> <!-- Reads request input using UTF-8 encoding --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> </listener> <!-- Handles all requests into the application --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/app-config.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>tiles</servlet-name> <servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class> <init-param> <param-name> org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG </param-name> <param-value> /WEB-INF/tiles-config.xml </param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>redirect.jsp</welcome-file> </welcome-file-list> </web-app>


Asegúrese de que ''idm.url'' esté establecido en el archivo de propiedades y que el archivo de propiedades esté cargado


Definitivamente no es un problema con el archivo de propenetas no encontrado, ya que en ese caso se lanza otra excepción.

Asegúrese de que realmente tiene un valor con la clave idm.url en su idm.properties .


La ubicación de su archivo de propiedad es classpath:idm.properties

Esto es bastante inusual, significa que idm.properties debe estar ubicado en el nivel superior de WEB-INF/classes o en el nivel superior de uno de los jar dentro de WEB-INF/lib . Por lo general, es una buena práctica utilizar una carpeta dedicada para las propiedades o mantenerlas cerca de los archivos de contexto que las utilizan.

Así que mi sugerencia es esta: ¿Es su archivo de propiedades tal vez al lado de su archivo de contexto? Si es así, no está en el classpath (vea esta pregunta: ¿WEB-INF está en CLASSPATH? ).

El classpath: prefijo se correlaciona con un ClassPathResource , pero probablemente necesite un ServletContextResource , y lo obtendrá desde un WebApplicationContext usando la sintaxis sin prefijo:

<context:property-placeholder location="idm.properties" />

Referencia:


Puede tener más de un org.springframework.beans.factory.config.PropertyPlaceholderConfigurer en su aplicación. Intente establecer un punto de interrupción en el método setLocations de la superclase y vea si se llama más de una vez al inicio de la aplicación. Si hay más de un org.springframework.beans.factory.config.PropertyPlaceholderConfigurer , es posible que necesite ver la configuración de la propiedad ignoreUnresolvablePlaceholders para que su aplicación se inicie limpiamente.


Todavía creo que tiene que ver con el archivo de utilería que no se encuentra en la primavera. Haz una prueba rápida pasando los params como jvm params. es decir, -Didm.url = ....


asegúrese de que su archivo de propiedades exista en el directorio classpath pero no en la subcarpeta de su directorio classpath. si existe en la subcarpeta, escriba como sigue classpath: subfolder / idm.properties