2

我在 STS 中做了一个简单的 Roo 项目。它创建了几个 .jspx 文件,我猜是模板。我希望能够在其中添加一些 HTML 和 CSS,但是每当我更改任何重要的内容时,都会出现异常。例如,当我添加一些基本的 HTML 时:

<div><span><p>Hello</p></span></div>

我得到这个例外:

SEVERE: Servlet.service() for servlet [msa] in context with path [/msa] threw exception [Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/layouts/default.jspx'.] with root cause
org.apache.jasper.JasperException: /WEB-INF/views/homepage/index.jspx (line: 14, column: 6) The content of elements must consist of well-formed character data or markup.

或者假设我需要遍历从控制器获得的列表:

<c:forEach var="announcement" items="${results}">
                    <option value ="10"><c:out value="${announcement.author}"/></option>
</c:forEach>

然后我得到这个异常:

SEVERE: Servlet.service() for servlet [msa] in context with path [/msa] threw exception [Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/layouts/default.jspx'.] with root cause
org.apache.jasper.JasperException: /WEB-INF/views/homepage/index.jspx (line: 12, column: 54) The prefix "c" for element "c:forEach" is not bound.

我不确定为什么对这个模板文件进行简单的更改如此困难。经过一番搜索,我发现.jspx文件的语法与.jsp文件的语法不同,不建议手动编辑。如何将 Roo 配置为使用 .jsp 文件?这甚至可能吗?

编辑:这是整个文件的示例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" version="2.0">
  <jsp:directive.page contentType="text/html;charset=UTF-8"/>
  <jsp:output omit-xml-declaration="yes"/>
  <spring:message code="label_homepage_index" htmlEscape="false" var="title"/>
  <util:panel id="title" title="${title}">
    <spring:message code="application_name" htmlEscape="false" var="app_name"/>
    <h3>
      <spring:message arguments="${app_name}" code="welcome_titlepane"/>
    </h3>

    <div><span><p>Hello</p></span></div>

    <c:forEach var="announcement" items="${results}">
                        <option value ="10"><c:out value="${announcement.author}"/></option>
    </c:forEach>

    </util:panel>
</div>

您可以注释掉我给出的第一个示例,以查看第二个示例的问题。但问题实际上并不在于这些特定情况,而是我不能在模板中使用常规 HTML,这将使我的页面编写变得更加困难。我怎样才能解决这个问题?

4

1 回答 1

1

关于你的第一个例子,你似乎把你的东西放在了错误的地方。也许粘贴整个文件(它很短),以便我们查看是否真的有错误。

在第二个示例中,异常显示“元素“c:forEach”的前缀“c”未绑定。”。这通常意味着您的 xmlns 前缀可能未在 jspx 标头中声明。

于 2013-01-03T14:51:32.740 回答