2013-07-21 25 views
2

Я пытаюсь интегрировать действие Tiles with Struts 2, основанное на аннотациях, но оно работает неправильно.Интеграция плитки с Struts 2 Аннотация

Поскольку у меня нет struts-config.xml, и в каждом учебнике, доступном в Интернете, они ссылаются на него с struts-config.xml.

Во-первых, можно интегрировать действие стоек на основе аннотаций с использованием плит. Если да, то как?

@Action(value="/login",results={@Result(name="success",location="/home",type=TilesResult.class), 
      @Result(name="login",location="/jsp/userLogin.jsp")}) 
    public String execute() { 

Это то, что мой код, но он всегда дает мне ошибку в MyEclipse на TilesResult.class что

Type mismatch: cannot convert from Class<TilesResult> to String 

У меня есть зависимость в моем ПОМ:

<dependency> 
    <groupId>org.apache.struts</groupId> 
    <artifactId>struts2-tiles-plugin</artifactId> 
    <version>2.1.8</version> 
</dependency> 

Может кто-нибудь помочь мне, как для добавления плиток в действиях, основанных на аннотациях


я использовал type="tiles" вместо type=TilesResult.class тогда он дал мне ниже исключения

Caused by: The Result type [tiles] which is defined in the Result annotation on the class [class com.actions.LoginAction] or determined by the file extension or is the default result type for the PackageConfig of the action, could not be found as a result-type defined for the Struts/XWork package [com.actions#convention-default#] - [unknown location] 
    at org.apache.struts2.convention.DefaultResultMapBuilder.createResultConfig(DefaultResultMapBuilder.java:422) 
    at org.apache.struts2.convention.DefaultResultMapBuilder.createFromAnnotations(DefaultResultMapBuilder.java:394) 
    at org.apache.struts2.convention.DefaultResultMapBuilder.build(DefaultResultMapBuilder.java:202) 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.createActionConfig(PackageBasedActionConfigBuilder.java:800) 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildConfiguration(PackageBasedActionConfigBuilder.java:586) 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:318) 
    at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) 
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204) 
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55) 
+0

Пробовали ли вы с 'типа = "плитки"'? Также вам нужно убедиться, что ваш родительский пакет расширяет фрагменты по умолчанию. –

+0

Да, но после этого он дал мне следующее исключение: Сообщение обновлено –

+0

Убедитесь, что в комплект поставки включен плагин codebehind. –

ответ

4

Попробуйте эти:

  1. Использование type="tiles" вместо type="TilesResult.class"

  2. Используйте определение цели плитки, location="tiles-definition-name", вместо страницы JSP, location="/jsp/userLogin.jsp", в вашем местерасположение результатов

  3. ли следующее в вашем web.xml:

    <context-param> <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name> <param-value>/WEB-INF/tiles.xml</param-value> </context-param> <listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener>

  4. ли следующее в вашем struts.xml (Если вы не используете аннотации в покое и не struts.xml, то вы должны создать минимальную один для этого, потому что нет аннотации доступны для определения пользовательского типа результата)

    <struts> <constant name="struts.convention.default.parent.package" value="codeoftheday.blogspot.com"/> <package name="codeoftheday.blogspot.com" extends="struts-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> </result-types> </package> </struts>

Примечание: Я написал подробную запись в блоге здесь по этому вопросу - Maven, Struts2 Annotations and Tiles Integration Example via Convention/Codebehind/Zero Config plugin using Eclipse IDE

+0

В основном я использую аннотацию с плитками, и это дает мне еще одно исключение. Я тоже сделал это SEVERE: Исходный стартовый фильтр struts2 Невозможно загрузить конфигурацию. - [неизвестное местоположение] –

+0

@Syed Muhammad Humayun Is Struts 2.5.10.1 поддержка аннотации для тега результата или любой другой альтернативы? –

0
  1. «org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG» это определение не доступно с Strut 2.5.10.1
  2. Я использовал следующие jars в моем проекте.
    • struts2-ядро-2.5.10.1
    • struts2-конгресс-плагин-2.5.10.1
    • Struts2-плитка-плагин-2.5.10.1
    • javax.servlet-апи-3.0.1

Пожалуйста, как только вы сравните ваш web.xml со следующим кодом.

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 
    <init-param> 
     <param-name>actionPackages</param-name> 
     <param-value>com.demo.action</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<context-param> 
    <!-- <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name> --> 
    <param-name>org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG</param-name> 
    <param-value>/WEB-INF/config/tiles.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> 
</listener> 
Смежные вопросы