标签: apache-tiles

Spring MVC 3返回内容类型:text/plain

我想在页面上显示简单的文本,因此我想返回Content-Typeas text/plain.

使用下面的代码,我在页​​面上看到纯文本,但返回Content-Type仍然是text/html.

我怎样才能解决这个问题?

注意:我正在使用带有Spring MVC的Tiles.返回的"m.health"指向一个tile def,它映射到一个health.jsp,它只包含下面的1行.

更新说明:我无法控制HTTP标头请求中的Content-TypeAccept值.text/plain无论发出什么样的请求,我都希望我的回复能够回复.

控制器:

@RequestMapping(value = "/m/health", method = RequestMethod.GET, headers = "Accept=*")
public String runHealthCheck(HttpServletResponse response, HttpServletRequest request, Model model) throws Exception {
    model = executeCheck(request, response, TEMPLATE, false, model);
    model.addAttribute("accept", "text/plain");
    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");
    return "m.health";
}
Run Code Online (Sandbox Code Playgroud)

JSP:

$ {}状态

java content-type spring-mvc apache-tiles

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

Apache Tiles的更好替代品

我正在寻找一个比Apache Tiles更好更容易使用的框架(到目前为止,我已经使用了几次).

使用Tiles,似乎当我有100个动作时,我需要创建100个jsp文件并在其中创建100个定义tiles.xml.

是否有更好的框架来管理我的模板?我想创建,例如,2个模板:

a)内容的菜单和列
b)菜单,内容列,右栏和横幅

在两个模板中,菜单都是常量.在template b,右列是常量,因此只有内容列不同.对于这个简单的例子,我不想定义扩展它的每个JSP文件template a(只是为了提供一个体).那是跛脚的imo.或许我很蹩脚,我可以在Apache Tiles中定义一个DEFAULT模板,我只是没有正确使用它.在任何情况下,所有帮助表示赞赏.

java spring web-frameworks spring-mvc apache-tiles

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

我不能插入基本的HTML空格而不会收到错误.还有其他方法吗?

每当我尝试使用&nsbp时,我都会使用spring,js和其他技术实现.对于空白区域,它给我以下错误:

引起:org.apache.jasper.JasperException:/WEB-INF/views/entrada/list.jspx(94,67)引用了实体"nbsp",但没有声明.

at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
    at org.apache.jasper.compiler.JspDocumentParser.parse(JspDocumentParser.java:216)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239)
    at org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:120)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:165)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    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.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
    at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:650)
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:644)
    at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103)
    ... 106 more
Run Code Online (Sandbox Code Playgroud)

我的代码:

</td>
        <td>
            <c:forEach items="${entrada.tags}" var="tag">
            <spring:url value="/find/ByTags?tags=${tag.id}" var="buscarTag"/>
                <a href="${buscarTag}">${tag}</a> &nbsp;
            </c:forEach>
        </td>
         <td><input type="hidden" class="horasIn" value="${entrada.horas}"/>
         ${fn:substring(entrada.horas, 0, 10)}
         <c:set var="totalHoras" value="${totalHoras+ entrada.horas }"></c:set>bs
Run Code Online (Sandbox Code Playgroud)

html whitespace apache-tiles

13
推荐指数
1
解决办法
7872
查看次数

使用Apache Tiles管理JavaScript和CSS

我正在寻找一种使用Apache Tiles以类似于ASP.NET MVC 4的方式管理CSS和JS资源的好方法.

在ASP.NET MVC4中,您有ContentBundles和ScriptBundles,您可以简单地编写

@ Scripts.Render( "〜/捆绑/ jquery的");

它将使用所有正确的语法插入您的css/scripts.然后为了使它更好,有@RenderSection("JavaScript",必需:false),它允许您在正确的包含顺序中插入JavaScript,并在视图上定义它.

@section JavaScript
{
    <script type="text/javascript" src="@Url.Content("/Scripts/jquery.tablesorter.min.js")"></script>
    <script type="text/javascript" src="@Url.Content("/Scripts/Custom/Roster.js")"></script>
}
Run Code Online (Sandbox Code Playgroud)

为了简化这一点,我基本上想在Spring MVC中使用Apache Tiles做类似的事情.它甚至可能吗?

我最初的想法和尝试是在tiles配置文件中创建一个"bundle"作为定义,但是需要一些JSP代码来正确插入和创建html语法.有没有人曾经尝试过这个或找到一个好的解决方案?

我在http://www.coderanch.com/how-to/java/TilesJavaScript上找到了这个例子,但它对于Tiles 3来说似乎没有语法正确.

主layout.jsp

">

以下是您为多个js文件执行此操作的方法:

瓷砖-defs.xml


    <!-- Child page Definition --> 
    <definition name="child.page" extends="master.page">    
        <put name="title" value="Child Page" /> 
        <put name="jsfile" value="app.childpage.jsfiles.tile" />
    </definition>

    <!-- JS Files Definition tile -->

    <definition name="app.childpage.jsfiles.tile" path="/layouts/jslayout.jsp">
        <putList name="jsfilesList">
            <add value="/config/childpage_jsfile1.js"/>
            <add value="/config/childpage_jsfile2.js"/>
            <add value="/config/childpage_jsfile3.js"/>
        </putList>
    </definition>
Run Code Online (Sandbox Code Playgroud)

jslayout.jsp

<tiles:useAttribute id="list" name="jsfilesList" classname="java.util.List" />
<c:forEach var="jsfileName" items="${list}">
    <script …
Run Code Online (Sandbox Code Playgroud)

jsp spring-mvc apache-tiles

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

在Spring 3中支持Apache tile EL

我正在尝试在Spring 3.1中配置apache tiles 2.2.2 EL支持.

根据tile文档以及我在google上发现的内容,这应该可以工作,但它确实没有,相反,它会抛出NullPointerException

瓷砖配置:

<bean class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">
    <property name="order" value="1"/>
</bean>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/views/**/views-def.xml</value>
        </list>
    </property>
    <property name="tilesProperties">
        <props>
            <prop key="org.apache.tiles.evaluator.AttributeEvaluator">
                org.apache.tiles.el.ELAttributeEvaluator
            </prop>
        </props>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

简单的瓷砖定义:

<tiles-definitions>
    <definition name="temp.test" template="/WEB-INF/views/temp/test.jsp">
        <put-attribute name="test" expression="${test}" />
    </definition>
</tiles-definitions>
Run Code Online (Sandbox Code Playgroud)

test.jsp的

<%--Works fine--%>
<h2>Called in jsp</h2>
<p>
    <c:out value="${test}"/>
</p>

<%-- throws NullPointerException --%>
<h2>Inserted from tiles</h2>
<p>
    <tiles:getAsString name="test"/>
</p>
Run Code Online (Sandbox Code Playgroud)

cp上的Tiles库:

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>2.2.2</version>
    </dependency> …
Run Code Online (Sandbox Code Playgroud)

spring-mvc apache-tiles

8
推荐指数
1
解决办法
2320
查看次数

spring with spring:getting error - java.lang.ClassNotFoundException:org.apache.tiles.TilesApplicationContext

我是春天的新手,并试图在春天使用瓷砖.但是犯了错误.我在我的项目中使用maven.我也尝试过更改版本,但没有用.以下是项目内容:

的pom.xml

  <!-- Apache Tiles -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.0.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>3.0.5</version>
    </dependency>

     <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>3.0.5</version>
    </dependency>
     <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-servlet</artifactId>
        <version>3.0.5</version>
    </dependency>
     <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-template</artifactId>
        <version>3.0.5</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

servlet的context.xml中

  <!-- for Tiles -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="viewResolver">  
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>            
</bean>

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer">  
    <property name="definitions" value="/WEB-INF/tiles-definitions.xml" />           
</bean>
Run Code Online (Sandbox Code Playgroud)

瓷砖-definitions.xml中

  <?xml version="1.0" encoding="UTF-8"?>
<tiles-definitions>  
    <definition name="base.definition" template="/WEB-INF/views/tilesMainTemplate.jsp">  
        <put-attribute name="title" value=""></put-attribute>  
        <put-attribute name="header" value="/WEB-INF/views/header.jsp"></put-attribute>  
        <put-attribute name="menu" value="/WEB-INF/views/home.jsp"></put-attribute>  
        <put-attribute name="body" value=""></put-attribute>  
        <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"></put-attribute>  
    </definition>  

    <definition extends="base.definition" name="saveAd">  
        <put-attribute name="title" …
Run Code Online (Sandbox Code Playgroud)

spring apache-tiles maven

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

如何删除特定视图的apache切片中的切片?

我想知道如何从视图中删除图块.我的主要观点是这样的

我的网页的主要布局

磁贴配置由4个部分组成:标题,菜单,正文和页脚.

现在我知道如果我请求一个新页面,我可以覆盖主视图,例如替换正文,以便我在那里显示不同的内容.

但是我希望能够点击菜单中的链接,将我带到一个只有标题和正文的页面(没有菜单或页脚).

没有菜单和页脚的特定布局

然后,用户将完成一个向导,在该向导中,他们可以从一个页面转到另一个页面,然后一旦完成,它应该再次返回到主布局.

这是我的问题:如何从视图中删除菜单和页脚?我的问题在这里停止

由于没有太多关于磁贴的文档,我可以找到,我想我会为其他人努力获得使用Spring工具套件使用Apache Tiles和Spring MVC的工作示例(我的版本是STS 3.2.0).

步骤如何使用STS创建一个简单的站点

  1. 创建一个新的STS项目

    文件>>新>> Spring模板项目>> Spring MVC Project

    选择"Spring MVC Project"选项

    为您的项目提供名称和顶级包

    GiveUrProjectANameAndPackage

    这将创建一个如下所示的项目

    在此输入图像描述

  2. 更改POM以使用SPRING 3.2.0.RELEASE

从:

<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
Run Code Online (Sandbox Code Playgroud)

至:

<org.springframework-version>3.2.0.RELEASE</org.springframework-version>
Run Code Online (Sandbox Code Playgroud)
  1. 将以下依赖项添加到POM文件以包含Apache Tile依赖项
<!-- Tiles -->
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-api</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-core</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-jsp</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-servlet</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-template</artifactId>
    <version>3.0.1</version>
</dependency> 
Run Code Online (Sandbox Code Playgroud)
  1. 更改"servlet-context.xml"以使用TilesViewResolver而不是默认的InternalViewResolver
<!-- Remove -->
<beans:bean class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
    <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"></beans:property>
    <beans:property name="order" value="0"></beans:property>
</beans:bean>
?
<!-- Add -->
<beans:bean class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"></beans:property> …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc apache-tiles

7
推荐指数
1
解决办法
8816
查看次数

使用Apache Tiles进行Spring Boot

我正在尝试将我的Java应用程序迁移到Spring Boot.目前,我正在使用Apache Tiles运行Spring MVC 3.2.当我迁移到Spring Boot时,我的控制器仍被调用,他们将视图传递给视图Resolver,但是当Tiles去拉JSP文件时,事情就会崩溃.我得到的错误信息是:

13:48:46,387 TRACE org.springframework.web.servlet.handler.SimpleUrlHandlerMapping:127 - No handler mapping found for [/jsp/layout/layout.jsp]
Run Code Online (Sandbox Code Playgroud)

有人在Spring Boot中成功使用过Apache Tiles吗?有什么想法怎么做?

提前感谢任何想法!


更多细节:

@Bean
    public UrlBasedViewResolver viewResolver(){
        LOGGER.trace("Entering tiles configurer");
        UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
        viewResolver.setViewClass(TilesView.class);
        return viewResolver;
    }
    @Bean
    public TilesConfigurer tilesConfigurer(){
        LOGGER.trace("Entering tiles configurer");
        System.out.println("Entering tiles configurer");
        TilesConfigurer tilesConfigurer = new TilesConfigurer();
        String[] defs = {"/WEB-INF/tiles-defs.xml"};
        tilesConfigurer.setDefinitions(defs);
        return tilesConfigurer;
    }
Run Code Online (Sandbox Code Playgroud)

控制器:

        @RequestMapping(value="/")
        public ModelAndView index(ModelAndView mav, HttpServletRequest request, HttpServletResponse resp,RedirectAttributes ra){
            LOGGER.trace("Arrived in Home Controller");
            mav.addObject("profile",appContext.getEnvironment().getActiveProfiles()[0]);
            mav.setViewName("home");
            return mav;
        } …
Run Code Online (Sandbox Code Playgroud)

apache spring tiles apache-tiles spring-boot

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

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

支持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
查看次数