Page directive: illega…

本文解决了一个jsp页面在包含另一个jsp文件时,由于多个contentType设置不同导致的JSP解析错误问题。通过统一两个页面的contentType属性解决了此问题。

这个是别人写的,很好

我用的最原始的方法解决了,

即在原页和处理页都改成了大写 UTF-8 问题就解决了

在一个项目jsp文件中包含了另一个jsp文件(proCitySelAll.jsp),执行出现如下错误:

2012-5-14 16:37:04 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /lightworkflow/sheet/depponOrder/proCitySelAll.jsp(1,2) Page directive: illegal to have multiple occurrences of contentType with different values (old: text/html; charset=UTF-8, new: text/html; charset=utf-8)
 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:236)
 at org.apache.jasper.compiler.Validator$DirectiveVisitor.visit(Validator.java:132)
 at org.apache.jasper.compiler.Node$PageDirective.accept(Node.java:608)
 at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
 at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
 at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
 at org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
 at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
 at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
 at org.apache.jasper.compiler.Validator$DirectiveVisitor.visit(Validator.java:99)
 at org.apache.jasper.compiler.Node$IncludeDirective.accept(Node.java:656)
 at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
 at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
 at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
 at org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
 at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
 at org.apache.jasper.compiler.Validator.validateDirectives(Validator.java:1723)
 at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:182)
 at org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
 at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
 at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
 at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:326)
 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.processRequest(ApplicationDispatcher.java:436)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
 at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
 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 com.hollycrm.service.system.web.PageCacheFilter.doFilter(PageCacheFilter.java:50)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at com.hollycrm.service.license.LicenseFilter.doFilter(LicenseFilter.java:47)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at com.hollycrm.service.system.security.web.filter.LoginUserInfoFilter.doFilter(LoginUserInfoFilter.java:167)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at com.hollycrm.framework.web.filter.RequestEncodeFilter.doFilter(RequestEncodeFilter.java:46)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at com.hollycrm.service.system.web.PageCacheFilter.doFilter(PageCacheFilter.java:50)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 at java.lang.Thread.run(Thread.java:619)

proCitySelAll.jsp 代码是没有错的,因为在其它页面调用没有出错过。那么是主文件出错了,看了一下刚写的页面全是静态内容,没什么的? 
仔细阅读错误信息: 
Page directive: illegal to have multiple occurrences of contentType with different values (old: text/html; charset=utf-8, new: text/html;charset=utf-8) 
原来是包含页面与被包含页面的@page指令里面的contentType不一致,仔细检查两个文件第一行的 @page, 

包含页面的是:

<think> 首先,用户的问题是:"我想查找解决 'Failed to resolve directive: loading' 错误的方法 请问解决方案:Failed to resolve directive: loading"。这涉及到Vue.js中自定义指令加载的问题。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式,但这里没有数学表达式,所以不需要。 - 独立公式必须使用$$...$$格式,但这里也没有公式。 - LaTeX语法正确:同样,不适用。 - 使用中文回答:是的,我需要用中文回复。 - 生成相关问题:必须在回答结束后生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如 [^n]。 现在,用户提供了站内引用: - 引用[1]:讨论了ElementPlus中v-loading不生效的问题,提到注册自定义指令。 - 引用[2]:给出解决方案,手动注册v-loading指令。 - 引用[3]:关于Vue图片懒加载的错误,但用户说这不是真正的需求,仅供参考。 用户上一次的问题和回答:用户说"上述引用仅供参考,并不是用户真正的需求",所以我需要专注于用户当前的问题:"解决 'Failed to resolve directive: loading' 错误的方法"。用户指定了这个错误,所以我要基于这个提供解决方案。 关键点: - 错误是"[Vue warn]: Failed to resolve directive: loading",这表示Vue无法解析名为'loading'的指令。 - 解决方案来自引用[2]:手动注册v-loading指令在main.ts文件中。 结构化回答: 1. **介绍问题**:解释错误的原因。 2. **提供解决方案**:基于引用[2],描述如何在入口文件(如main.ts)中注册指令。 3. **确保可靠性**:引用来源。 4. **生成相关问题**:在结束时添加相关问题。 回答结构: - 清晰、逐步解决问题。 - 用中文。 解决方案步骤: - 在Vue应用的入口文件中(通常是main.ts或main.js),手动注册'loading'指令。 - 使用Element Plus的ElLoading.directive。 - 码示例:import { createApp } from 'vue'; import { ElLoading } from 'element-plus'; const app = createApp(App); app.directive('loading', ElLoading.directive); 添加引用标识: - 在引用段落末尾添加 [^n],例如提到引用[2]的内容时。 生成相关问题: - 在结束时,添加"§§相关问题§§"部分,列出2-3个相关问题。 相关问题想法: 1. 如何手动注册其他Vue指令? 2. Element Plus中使用v-loading的常见问题? 3. 如何自定义加载指示器? 最终回答框架: 1. 解释错误。 2. 给出解决方案。 3. 引用来源。 4. 相关问题。 </think> ### 解决 'Failed to resolve directive: loading' 错误的方法 在Vue.js应用中,'Failed to resolve directive: loading' 错误通常是由于Vue无法识别或加载自定义指令 'loading' 导致的。这在使用Element Plus等UI库时常见,因为 'v-loading' 指令需要手动注册才能生效。错误的主要原因是: - Vue未正确加载或注册该指令。 - 库的自动注册可能失败,尤其是在使用Element Plus时,需要显式配置。 根据您的引用,解决方案基于Element Plus的文档和实践经验。以下是详细的解决步骤(以Vue 3为例): #### 步骤-by-步骤解决方案 1. **检查入口文件**:确保在Vue应用的入口文件(通常是 `main.ts` 或 `main.js`)中进行手动注册。Element Plus的 'v-loading' 指令默认不会自动注册,需要显式导入和绑定。 2. **导入所需模块**:在入口文件中,使用 `import` 语句导入 Vue 创建函数和 Element Plus 的 Loading 指令组件。 3. **手动注册指令**:在初始化Vue应用后,调用 `app.directive()` 方法注册 'loading' 指令,绑定到 Element Plus 的 `ElLoading.directive`。 4. **码示例**: ```typescript // main.ts 文件 import { createApp } from 'vue'; import App from './App.vue'; // 导入你的根组件 import { ElLoading } from 'element-plus'; // 导入Element Plus的Loading指令组件 import 'element-plus/dist/index.css'; // 确保导入样式文件,避免样式问题 const app = createApp(App); // 创建Vue应用实例 // 手动注册v-loading指令 app.directive('loading', ElLoading.directive); app.mount('#app'); // 挂载应用 ``` - **关键点**:`ElLoading.directive` 是Element Plus提供的指令实现,直接绑定到全局指令名 'loading'。如果注册成功,错误消息将消失,'v-loading' 功能正常生效[^2]。 5. **验证和测试**:保存文件后,重启开发服务器(例如运行 `npm run dev`)。在控制台检查是否有其他警告;如果错误依旧,确保Element Plus版本兼容(推荐使用最新稳定版)。 #### 常见问题排查 - **版本兼容性**:确保Element Plus版本与Vue 3兼容(Element Plus专为Vue 3设计)。如果使用旧版Element UI(for Vue 2),请升级或参考兼容文档。 - **样式缺失**:未导入Element Plus的CSS文件可能导致指令无效,添加 `import 'element-plus/dist/index.css'` 解决[^2]。 - **其他库干扰**:如果项目同时使用Vant或其他UI库,确保指令名不冲突。例如,引用[3]中懒加载错误通过显式注册解决,类似原则适用于 'loading' 指令[^3]。 此方案基于Element Plus的官方实践,能有效修复错误。如果您使用其他库(如Vant),原理相同:手动注册指令即可[^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值