我在JSP中有以下内容:
<c:if test="${true}">
<jsp:attribute name="extraInlineComplianceJavascript">
window.isSummaryComplianceLinkVisible = '${TabList.isSummaryComplianceLinkVisible}';
window.isDetailComplianceLinkVisible = '${TabList.isDetailComplianceLinkVisible}';
window.complianceSummaryReportTag = '${helper.complianceSummaryReportTag}';
window.complianceDetailReportTag = '${helper.complianceReportTag}';
</jsp:attribute>
</c:if>
Run Code Online (Sandbox Code Playgroud)
原样,我得到以下异常:
Must use jsp:body to specify tag body for <MyTag if jsp:attribute is used.
Run Code Online (Sandbox Code Playgroud)
如果我删除最外面的<c:if>标签,它的工作原理.有没有用的问题<jsp:attribute>里面<c:if>?任何帮助,将不胜感激.谢谢.
关于访问jsp:param值,我有与此海报完全相同的基本问题;完全按照他的榜样对我不起作用。通过jsp:include传递的参数似乎没有显示在包含的文件中。我的设置有什么特别之处吗?
呼叫者:
<div>
<jsp:include page="../../../common/callee.jsp">
<jsp:param name="justinVar" value="primary" />
</jsp:include>
</div>
Run Code Online (Sandbox Code Playgroud)
callee.jsp:
<i>method 1: [</i><b><%= request.getParameter("justinVar") %></b><i>]</i>
<p/>
<i>method 2: [</i><b>${param.justinVar}</b><i>]</i>
<p/>
<i>method 3: [</i><b>${justinVar}</b><i>]</i>
<p/>
Run Code Online (Sandbox Code Playgroud)
最终输出:
method 1: [null]
method 2: []
method 3: []
Run Code Online (Sandbox Code Playgroud)
更新:以下解决方法确实起作用,这似乎是错误的,但是也许它起作用的事实揭示了一些不起作用的事实。
<c:set var="justinVar" value="justinVARisHere" scope="request" />
<jsp:include page="../../../common/callee.jsp" />
Run Code Online (Sandbox Code Playgroud) 当添加cookie的代码是主页面(main.jsp)中包含的JSP片段(includes.jsp)的一部分时,通过JSP:INCLUDE,Cookies不会被添加到浏览器中.
当代码是主页面(main.jsp)的一部分时,代码工作正常.但是,我需要通过片段添加cookie,因为该片段用于我希望添加cookie的几十个页面中.
注意:jsp:include是main.jsp标题部分的一部分(该片段还添加了许多javascript和css引用)
这是片段:
Cookie cookie = new Cookie ("test","test cookie");
cookie.setMaxAge(365 * 24 * 60 * 60);
cookie.setPath("/");
response.addCookie(cookie2);
Run Code Online (Sandbox Code Playgroud)
当它是main.jsp的一部分时,上面的工作正常,但当它是添加到main.jsp via的片段的一部分时,它不起作用.几乎就像渲染片段后重置响应对象一样.
这main.jsp是Web应用程序的此目录中的位置:
/WEB-INF/jsps/foo/section/main.jsp
Run Code Online (Sandbox Code Playgroud)
main.jsp包含以下代码行,以尝试包含mainInclude.jsp其中包含的代码,该代码位于不同的目录中:
<jsp:include page="/WEB-INF/jsps/foo/includes/mainInclude.jsp" />
Run Code Online (Sandbox Code Playgroud)
但是,这会生成以下错误:
javax.servlet.ServletException:
File '/WEB-INF/jsps/foo/includes/mainInclude.jsp' not found
Run Code Online (Sandbox Code Playgroud)
为什么没找到?我检查了位置,它出现在它所说的位置.
我正在编写一些代码,用于动态地在页面中包含HTML代码段.基本上,我在一台服务器上有课程信息,我希望其他服务器能够包含一行代码.
如果它在同一台服务器上,我会用它:
<jsp:include page="coursedescription.jsp?subj=ENGL100" />
Run Code Online (Sandbox Code Playgroud)
但JSP页面位于不同的服务器上.这是我尝试过的,它不起作用:
<jsp:include page="http://myotherserver.com/courselist.jsp?subj=ENGL" />
Run Code Online (Sandbox Code Playgroud)
如何通过指定URL来包含其他JSP页面中的代码段?
我知道这可能是一个愚蠢的问题,我尝试谷歌搜索,但没有得到完美的答案.
我正在使用以下代码
<c:forEach var="aggregatedBatchProgressMetrics" items="${batchProgressMetricsList}">
<jsp:include page="html/tableContentsDisplayer.jsp">
<jsp:param name="batchProgressMetrics" value="${aggregatedBatchProgressMetrics}" />
</jsp:include>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
在html/tableContentsDisplayer.jsp里面,我有以下内容
<c:set var="aggregatedBatchProgressMetrics">${param.batchProgressMetrics}</c:set>
<tr>
<td class="tdcenter">${aggregatedBatchProgressMetrics["clientId"]}</td>
<td class="tdcenter">${aggregatedBatchProgressMetrics["instrumentStats"]["totalImntsCompleted"]}</td>
<td class="tdcenter">${aggregatedBatchProgressMetrics["instrumentStats"]["totalImntsRemaining"]}</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
aggregatedBatchProgressMetrics是我从c得到的:forEach是com.xyz.AggregatedBatchProgressMetrics类型的对象,而不是String,从它将其视为String对象的例外.我在bean里面有getClientId方法.此外,如果我按原样放置包含的jsp文件的内容(没有指令和c:set标签),它的工作绝对正常.有没有办法我可以使用jsp:param标签传递一个对象,并在接收端我得到它作为一个对象?
是否有可能使用jstl或我必须使用scriptlets /表达式相同?
谢谢,阿尔玛斯
我已经使用netbeans准备了一个静态html页面.我可以将该页面导入另一个页面,以便不再次重新编写代码,然后进行相应的更改.
在我看到的很多JSP/Servlet应用程序示例中,当应用程序通过指令或操作包括JSP中的资源时,包含的文件具有.inc扩展名.这是为什么?为什么我们不使用.jsp扩展名呢?
在Java EE环境下,我构建了一个包含多个JSP文件的Web页面.让我们说一个包含的JSP是header.jsp.可以与Stackoverflow使用的非常类似,显示有关用户,链接等的信息.此JSP链接到java控制器以获取用户信息,并且是我的WAR文件的一部分,包括所有Web应用程序.
为了开发它,我使用Eclipse并使用Maven构建和打包它.
现在我需要构建一个新的webApplication(这是一场新的战争),我想重用标头.
我假装的是:
所以问题是:
有办法避免将两个文件(header.jsp和controller.java)从旧项目复制并粘贴到新项目中吗?
我需要使用jsp include标签将一些其他应用程序动态创建的html页面加载到我的应用程序jsp页面中<jsp:include page="${Htmlpath}" /> OR <jsp:include page="D:\MySharedHTML\test.html" />.我的想法是在服务器上有一个共享文件夹,如"MySharedHTML",让其他应用程序在那里创建html文件,我的应用程序将通过提供完整路径访问.但jsp include表示"请求的资源D:\ MySharedHTML\test.html不可用".任何输入如何做到这一点.提前致谢.