效果很好。 但是如果主jsp不包含语言变量defn,那么编译会失败 An error occurred a-6ren">
gpt4 book ai didi

java - 如何检查jsp页面中是否存在变量是否被另一个页面包含

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:25 25 4
gpt4 key购买 nike

通常我的jsps在开头包含以下内容

<%@ page contentType="text/html"%>
<%@ page errorPage="error.jsp"%>
<%! String language ="en"; %>
<%@ include file="/layout/inc/pagestart.jsp" %>

并且pagestart.jsp包含

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="<%=language%>">

效果很好。

但是如果主jsp不包含语言变量defn,那么编译会失败

An error occurred at line: 2 in the jsp file: /layout/inc/pagestart2.jsp
language cannot be resolved to a variable
1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2: <html lang="<%=language%>">
3: <%@ include file="/layout/inc/head.jsp" %>
4: <%@ include file="/layout/inc/bodystart.jsp" %>
5: <%@ include file="/layout/inc/header.jsp" %>


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:469)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

如何修改 pagestart.jsp 使其默认为输出

<html lang="en">

如果变量尚未设置n

基于 Alex Clems 答案的解决方案如果调用页面未设置属性,这仍然有效

pagestart.jsp

<%! String language = "en"; %>
<%
String lang = (String) request.getAttribute("language");
if(lang != null) {
language = lang;
}
out.print("<html lang=\""+language+"\">");
%>

调用jsp.jsp

<%@ page contentType="text/html"%>
<%@ page errorPage="error.jsp"%>
<% request.setAttribute("language", "de"); %>
<%@ include file="/layout/inc/pagestart.jsp" %>

最佳答案

尝试使用pageContext:

调用.jsp:

<% pageContext.setAttribute("language", "en"); %>
<jsp:directive.include file="pagestart.jsp"/>

pagestart.jsp:

<html lang="${language}">

或者使用jsp:include

调用.jsp:

<jsp:include page='pagestart.jsp'>
<jsp:param name="language" value="en"/>
</jsp:include>

pagestart.jsp:

<html lang="${param.language}">

关于java - 如何检查jsp页面中是否存在变量是否被另一个页面包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com