0

有没有人在 Jenkins CI 中调用了一个使用 JspC 预编译 JSP 的 ant 脚本?我正在尝试迁移我的项目以使用 Jenkins,当我调用我的 ant 脚本时,我不断收到以下异常:

org.apache.jasper.JasperException: file:/demo /workspace/Trunk/src/main/webapp/pages/test.jsp (line: 9, column: 0) useBean 类属性 org.demo.model 的值。用户帐户无效。

ant 脚本在 Jenkins 之外运行良好,但在其中运行时不会出现错误。想法?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<jsp:useBean id="User" class="com.demo.model.UserAccount"/>
<c:url var="saveUserUrl" value="/account/save.html" />

<form:form modelAttribute="account" method="POST" action="${saveUserUrl}">  
<form:errors path="*" cssClass="statusError" element="p" htmlEscape="false" />
<form:hidden path="id"/>

    <div style="width:60%"> 
        <fieldset>          
            <p class="field">
                <label for="">First Name</label>
                <form:input path="firstName" title="First name"/>
            </p>            
            <p class="field">
                <label for="">Last Name</label>
                <form:input path="lastName" title="Last name">
            </p>        
            <p class="field">
                <label for="">E-mail Address</label>
                ${account.email}
            </p>
        </fieldset>
        <p class="field">
            <input type="submit" class="button" value="Save" name="submit"/>
        </p>
    </div>  

</form:form>
4

1 回答 1

0

您是否检查过您的库路径并包含在内?根据 JSP 文档,JSP:UseBean 任务将首先尝试在您的路径中查找 bean。如果它确实找到了那个类,那么我不知道它是否会注意你在那个点下面输入的内容。bean 的哪个声明优先?内联或它在路径中找到什么?

http://profesores.elo.utfsm.cl/~agv/elo330/2s03/projects/Tomcat/doc/1.2/syntaxref1217.html

此外,从 Tomcat5 开始,该 ant 任务 (JspC) 似乎已被弃用。 https://ant.apache.org/manual/Tasks/jspc.html

Ant 文档建议使用 Tomcat 任务而不是 ant 任务。 这个任务有很多限制,部分来自 Jasper 的多个版本,其他来自任务中的实现“问题”(即没有人愿意从根本上改变它的大部分来解决 jasper)。由于这一点以及 JSP 页面不必跨实现(或实现的版本)可移植的事实,此任务更适合用于在部署之前验证 JSP 页面,而不是预编译它们。为此,只需在部署后部署并运行您的 httpunit junit 测试即可编译和测试您的页面,一气呵成。

于 2015-05-06T16:40:00.293 回答