Spring MVC 资源未找到-无法找到资源与速度

yhqotfr8  于 2023-10-24  发布在  Spring
关注(0)|答案(2)|浏览(185)

不知道为什么我得到这个错误-我看不到什么是我的配置错误。
要使用的文件的引用在我的配置中引用的notification.properties文件中:
classpath:com/app/application/notification/notification
我的应用程序运行正常,并在notificaitons.properties文件中查找new.user.password.template=en/newuserpassword.html
我已经调试过了,它发现'en/newuserpassword.html'很好,但它找不到实际的文件本身。
我已经检查过了,文件确实在那里-完全匹配,但就是找不到它:
resources/com/app/application/notification/template/en/newuserpassword.html
异常:找不到资源'en/newuserpassword.html'在org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl. java:474)在org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl. java:352)在org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1533)在org.apache.velocity.app.VelocityEngine. mergeTemplate(VelocityEngine.java:343)在org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:320)

<bean id="notificationResolver" class="com..application.notification.resolver.VelocityNotificationResolver">
        <constructor-arg>
            <bean class="com.amor.hcplus.application.util.spring.context.TypeConvertingReloadableResourceBundleMessageSource">
                <property name="cacheSeconds" value="60" />
                <property name="basenames">
                    <list>
                        <value>classpath:com/app/application/notification/notifications</value>
                        <value>WEB-INF/spring/i18n/enums</value>
                    </list>
                </property>
            </bean>
        </constructor-arg>
        <constructor-arg>
            <bean id="velocityEngine" class="org.apache.velocity.app.VelocityEngine">
                <constructor-arg ref="velocityProperties"/>
            </bean>
        </constructor-arg>
    </bean>

我有一个类似的设置,为审计邮件的工作正常,模板被发现

<bean id="auditMessageResolver" class="com.amor.hcplus.application.audit.domain.VelocityAuditMessageResolver">
        <constructor-arg>
            <bean class="com.application.util.spring.context.TypeConvertingReloadableResourceBundleMessageSource">
                <property name="basenames">
                    <list>
                        <value>WEB-INF/spring/i18n/enums</value>
                        <value>classpath:com/app/application/audit/auditing</value>
                    </list>
                </property>
            </bean>
        </constructor-arg>
        <constructor-arg>
            <bean id="velocityEngine" class="org.apache.velocity.app.VelocityEngine">
                <constructor-arg ref="velocityProperties"/>
            </bean>
        </constructor-arg>
    </bean>
guz6ccqo

guz6ccqo1#

如果您的模板在类路径中的com/app/application/notification/template/en/newuserpassword.html
你让velocity求en/newuserpassword.html
那么你的模板位置应该是com/app/application/notification/template
而不是com/app/application/notification/notifications

dluptydi

dluptydi2#

这是一个愚蠢的错误,对我来说,但希望它可以突出问题,任何人在未来阅读这一点。
我的notificaitons配置引用了一个velocity属性,它指向审计模板。这是如此明显,我甚至没有注意到它。

<util:properties id="velocityPropertiesNotifications">
    <prop key="resource.loader">file</prop>
    <prop key="file.resource.loader.class">org.apache.velocity.runtime.resource.loader.FileResourceLoader</prop>
    <prop key="file.resource.loader.cache">true</prop>
    <prop key="file.resource.loader.path">C:/Program Files/Apache Software Foundation/Tomcat 9.0_Tomcat9.0.76/webapps/my-app/WEB-INF/classes/com/application/notification/templates</prop>
</util:properties>

我只是添加了一个新的属性,它指向了我的模板存储的正确目录-这解决了找不到错误。

相关问题