标签: apache-tiles

使用Maven时找不到切片的标记库描述符

这是我在web.xml文件中的配置

<listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

这是配置 pom.xml

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.2.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.2.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>2.2.2</version>
        <type>pom</type>
        <scope>compile</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

它一直这样说:Can not find the tag library descriptor for "http://struts.apache.org/tags-tiles"当我将taglib添加到布局中时:

<%@ taglib prefix="tiles" uri="http://struts.apache.org/tags-tiles"%>
Run Code Online (Sandbox Code Playgroud)

当我在服务器上运行时:

SEVERE: Error configuring application listener of class org.apache.struts2.tiles.StrutsTilesListener
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

jsp struts2 apache-tiles maven

6
推荐指数
1
解决办法
2万
查看次数

Apache Tiles框架的优缺点

当天的问候,我只是试图找出使用Apache Tiles框架的利弊.请告诉我您宝贵的建议,意见和相同的意见.

apache-tiles

6
推荐指数
2
解决办法
6127
查看次数

支持Apache Tiles中的动态和翻译标题

我有一个使用Apache Tiles的Spring MVC项目.我已实现,以便可以从这样的消息源读取标题:

<tiles-definitions>    
    <definition name="some-definition" extends="public.base">
        <put-attribute name="title" value="some-definition.title" cascade="true" />
    </definition>
</tiles-definitions>
Run Code Online (Sandbox Code Playgroud)

在我的模板文件(定义public.base)中,我执行以下操作:

<title><spring:message text="" code="${title}" /></title>
Run Code Online (Sandbox Code Playgroud)

现在这适用于静态翻译标题,但我也想支持动态标题,例如显示公司名称.我可以这样做:

<tiles-definitions>    
    <definition name="some-definition" extends="public.base">
        <put-attribute name="title" expression="${company.name}" />
    </definition>
</tiles-definitions>
Run Code Online (Sandbox Code Playgroud)

然后只需在我的模板中输出标题,如下所示:<c:out value="${title}" />.但是,问题在于我的代码中断了,因为title属性的值不再是消息键.我希望能够支持以下场景:

  1. 静态标题,例如"关于我们"
  2. 纯粹的动态标题,例如"$ {company.name}"
  3. 带有翻译内容的动态标题,例如"欢迎来到$ {company.name}"

理想情况下,我可以在我的消息源中使用表达式语言,但我无法使用它.我已经尝试了很多种解决方案,但我似乎找不到合适的解决方案.如果我可以在我的消息源中使用表达式语言,那么这很容易.例如,是否有可能以某种方式执行以下操作?

some-definition.title = Hello there, ${company.name}
Run Code Online (Sandbox Code Playgroud)

在我的模板中:

<spring:message text="" code="some-definition.title" var="test" />
<c:out value="${test}" />
Run Code Online (Sandbox Code Playgroud)

以上不起作用,因为它输出${company.name}而不是变量的实际内容.有没有办法让这样的工作?或者还有其他方法可以支持我上面列出的方案吗?

我考虑创建一个自定义JSTL标记,我将在普通Java代码中解析字符串表达式(已翻译的字符串),但我意识到我可能必须明确指定"变量替换"的根对象才能工作,如此处所述.然后它似乎不是一个动态的解决方案.

有什么方法可以完成这项任务吗?任何帮助深表感谢!

spring tiles el apache-tiles

6
推荐指数
1
解决办法
1181
查看次数

Apache Tiles 3和Tomcat 8

当我使用Tomcat 8时,我收到以下错误:

Caused by: java.io.IOException: ServletException including path '/WEB-INF/jsp/tiles-base.jsp'.
at org.apache.tiles.request.servlet.ServletUtil.wrapServletException(ServletUtil.java:61)
at org.apache.tiles.request.servlet.ServletRequest.doInclude(ServletRequest.java:245)
at org.apache.tiles.request.AbstractClientRequest.dispatch(AbstractClientRequest.java:54)
at org.apache.tiles.request.render.DispatchRenderer.render(DispatchRenderer.java:47)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:259)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:397)
... 37 more
Caused by: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.jsp.tiles_002dbase_jsp
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:131)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:62)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:129)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:523)
at org.apache.tiles.request.servlet.ServletRequest.doInclude(ServletRequest.java:243)
... 41 more
Run Code Online (Sandbox Code Playgroud)

希望摆脱这个错误,我从Tiles 2.2.2升级到Tiles 3.0.5.但是仍然会遇到与Tomcat 8相同的错误.

使用Tomcat 7它可以工作.

我使用Spring版本3.2.9.RELEASE.

我认为它必须是Servlet API的一部分......?知道该怎么办?

这是tiles-base.jsp:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<% …
Run Code Online (Sandbox Code Playgroud)

java spring apache-tiles tiles-3

6
推荐指数
1
解决办法
1506
查看次数

不处理Apache tile定义中的EL表达式

我使用Apache tile进行模板化,部分模板是标题文本.此文本取决于页面所属的部分.每个页面都包含一个bean,标题文本是使用该bean的属性构建的.bean的每个页面都有不同的名称.所以,在我的JSP文件中,我会有这样的事情:

<div>${myBean.id} - ${myBean.name}</div>
Run Code Online (Sandbox Code Playgroud)

我想在tile定义中得到那个表达式,我尝试了这个:

<definition template="/WEB-INF/tiles/layout/mytemplate.jsp">
  <put-attribute name="title" expression="${myBean.id} - ${myBean.name}" />
</definition>
Run Code Online (Sandbox Code Playgroud)

在我做的模板中:

<div class="title-header"><tiles:insertAttribute name="title" /></div>
Run Code Online (Sandbox Code Playgroud)

但结果是未经处理的EL表达式:

<div>${myBean.id} - ${myBean.name}</div>
Run Code Online (Sandbox Code Playgroud)

这里的代码已经简化,以保持这篇文章的简洁,但这正是我想要做的.也有理由我尝试这样做.

知道EL表达式没有被处理的原因吗?

谢谢

注意:我对JSP和Apache Tiles相当新,所以我可能没有使用正确的术语.

java jsp apache-tiles

5
推荐指数
1
解决办法
2394
查看次数

如何在将tile插入页面之前检查tile属性的存在

我在struts2应用程序中使用tile.在定义基本布局时,我定义了一个属性"scriptFile".

<definition name="baseLayout" template="/application/base-layout.jsp" >
    ... 
</definition>

<definition name="custom.tiles" extends="baseLayout">
    <put-attribute name="scriptFile" value="js/custom-script.js"></put-attribute>
</definition>
Run Code Online (Sandbox Code Playgroud)

如果开发人员在切片定义文件"tiles.xml"中提供"scriptFile",则应使用以下行包含此脚本文件

<script language="javascript" src="<tiles:insertAttribute name="scriptFile"></tiles:insertAttribute>"></script>
Run Code Online (Sandbox Code Playgroud)

但是,如果未定义scriptFile属性,则必须跳过此行.

如何检查tile中是否存在"scriptFile"属性.有没有更好的方法来做这件事?

struts2 tiles java-ee apache-tiles

5
推荐指数
1
解决办法
6067
查看次数

Apache Tiles-无法在Spring MVC中的自定义ViewPreparer中访问bean

我正在使用Spring 3.2和Apache Tiles。我使用Roo生成了很多服务类。我正在尝试一个简单的过程,将变量注入jsp模板。那部分工作正常,但是我被困在需要引用服务bean的地步。

@Component
public class CustomViewPreparer implements ViewPreparer {

@Autowired
UserProfileService ups;

@Override
public void execute(TilesRequestContext tilesContext,
                    AttributeContext attributeContext) {

       Authentication a = SecurityContextHolder.getContext().getAuthentication();
       String name = a.getName(); //get logged in username

       UserProfile up = ups.findByUsername(name);
       //request.setAttribute("isLoggedIn", up!=null);

    }
}
Run Code Online (Sandbox Code Playgroud)

UserProfileService的“ ups”始终为null。我发现了这一点:http : //forum.springsource.org/showthread.php?48950-ViewPreparer-is-triggered-before-Session-starts

但我不明白回应。我可以通过在每次返回View时注入变量来解决此问题,但是我很好奇其他人如何解决了这个问题。

java spring spring-mvc javabeans apache-tiles

5
推荐指数
1
解决办法
1116
查看次数

禁用Apache tiles 3中的多语言选项

我正在接受Apche tiles 3和Spring MVC 4的警告我没有为多语言支持添加任何额外的配置,但它默认支持.任何人都可以帮我禁用此选项以在我的网站中删除此警告.

    org.apache.tiles.request.locale.PostfixedApplicationResource.
<init> No supported matching language for locale "sw". 
Using file:/opt/apache-tomcat-8.0.35/webapps/ROOT/WEB-INF/tiles/app-core_sw.xml as a non-localized resource path. see TILES-571
Run Code Online (Sandbox Code Playgroud)

tomcat spring-mvc apache-tiles tiles-3

5
推荐指数
1
解决办法
1066
查看次数

Apache Tiles问题 - org.apache.tiles.jsp.taglib.InsertAttributeTag无法强制转换为javax.servlet.jsp.tagext.Tag

我试图在Struts 2中使用tile 2.2.2.我在项目中包含了所有必需的jar(与tile,Struts2和Struts2 tiles插件相关).

commons-beanutils-1.8.0.jar
commons-collections-3.1.jar
commons-digester-2.0.jar
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
slf4j-api-1.5.8.jar
slf4j-jdk14-1.5.8.jar
struts2-core-2.3.15.jar
struts2-tiles-plugin-2.3.15.jar
tiles-api-2.2.2.jar
tiles-compat-2.2.2.jar
tiles-core-2.2.2.jar
tiles-jsp-2.2.2.jar
tiles-servlet-2.2.2.jar
tiles-template-2.2.2.jar
xwork-core-2.3.15.jar
Run Code Online (Sandbox Code Playgroud)

Tiles.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

<definition name="baseLayout" template="/BaseLayout.jsp">
    <put-attribute name="title" value="" />
    <put-attribute name="header" value="/Header.jsp" />
    <put-attribute name="menu" value="/Menu.jsp" />
    <put-attribute name="body" value="" />
    <put-attribute name="footer" value="/Footer.jsp" />
</definition>

<definition name="/welcome.tiles" extends="baseLayout">
    <put-attribute name="title" value="Welcome" />
    <put-attribute name="body" value="/Welcome.jsp" />
</definition>

<definition name="/employee.tiles" …
Run Code Online (Sandbox Code Playgroud)

struts2 apache-tiles

4
推荐指数
1
解决办法
4524
查看次数

如何将Spring 4与Apache Tiles 3集成?

我正在使用Spring框架版本4,我混淆了哪个文件夹放置XML文件,特别是tile定义以及在哪里找到解析器bean.

java spring apache-tiles tiles-3 spring-4

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

apache-tiles ×10

java ×4

spring ×4

struts2 ×3

tiles-3 ×3

jsp ×2

spring-mvc ×2

tiles ×2

el ×1

java-ee ×1

javabeans ×1

maven ×1

spring-4 ×1

tomcat ×1