0 0

XML引入非默认名字标签,不能通过校验10

    如标题:我想在文档中,除使用默认的beans名称空间外,增加sca标签,xsd也定义了,就是不能通过校验:Unable to load a schema with target namespace 'http://www.springframework.org/schema/sca' from 'http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd'.
    代码红色部分为我需要增加名字标签的关键代码。

    xml代码如下:


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sca="http://www.springframework.org/schema/sca"
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/sca
    http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">

<sca:service name="accountOperationService"
type="spring.AccountOperationInterface" target="accountOperation "/>

<bean id="accountOperation" class="spring.AccountOperation">
<property name="add_a" ref="add_a_bean"></property>
<property name="sub_b" ref="sub_b"></property>
</bean>
<bean id="add_a_bean" class="spring.Account">
<property name="account_id" value="1"></property>
<property name="account_name" value="chenwx"></property>
<property name="account_money" value="2000.0"></property>
</bean>

</beans>
XML 
2014年5月14日 12:36

2个答案 按时间排序 按投票排序

0 0

你要实现自定义的标签,步骤如下:

1. 首先你需要定义一个BeanDefinitionParser:

public class ServiceBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {

    @Override
    protected void doParse(Element element, BeanDefinitionBuilder builder) {
        String name = element.getAttribute("name");
        String type = element.getAttribute("type");
        String target = element.getAttribute("target");
        //然后调用build的相关方法去设置相应的值
        
    }

    @Override
    protected Class<?> getBeanClass(Element element) {
        return YourService.class;
    }
    
}


2. 首先你需要定义一个自己的NamespaceHandlerSupport

import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
 
public class MyNamespaceHandler extends NamespaceHandlerSupport {

    @Override
    public void init() {
        registerBeanDefinitionParser("service", new ServiceBeanDefinitionParser());
    }
}


3. 还需要再定义三个文件,放在META-INF文件夹下面:

3.1 自定义xsd文件,比如叫sca.xsd,里面的内容如下:

  <?xml version="1.0" encoding="UTF-8"?>  
<xsd:schema   
    xmlns="http://yourcompany.com/schema/sca"  
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
    xmlns:beans="http://www.springframework.org/schema/beans"  
    targetNamespace="http://yourcompany.com/schema/sca"  
    elementFormDefault="qualified"   
    attributeFormDefault="unqualified">  
    <xsd:import namespace="http://www.springframework.org/schema/beans" />  
    <xsd:element name="service">  
        <xsd:complexType>  
            <xsd:complexContent>  
                <xsd:extension base="beans:identifiedType">  
                    <xsd:attribute name="name" type="xsd:string" />  
                    <xsd:attribute name="type" type="xsd:string" />  
                    <xsd:attribute name="target" type="xsd:string" />  
                </xsd:extension>  
            </xsd:complexContent>  
        </xsd:complexType>  
    </xsd:element>  
</xsd:schema>


3.2 spring.handlers 里面的内容是:

   http\://yourcompany.com/schema/sca=com.yourcompany.MyNamespaceHandler


3.3 spring.schemas 里面的内容是:

  http\://yourcompany.com/schema/sca.xsd=META-INF/sca.xsd


然后就可以在spring的配置文件里面引入你自定义的命名空间了

2014年5月14日 13:10
0 0

自定义标签因为问题吧
http://sammor.iteye.com/blog/1102401

2014年5月14日 12:47

相关推荐

    struts2实现服务器端校验示例

    在上述配置中,`&lt;validation&gt;`标签指定了对执行`execute`方法时的校验,如果校验失败,结果会跳转到`/register.jsp`,即输入页面,展示错误信息。 接下来,我们创建一个对应的校验规则文件,如`register-validation...

    struts2 短路校验(客户端校验)

    这通常通过在`struts-default.xml`或自定义的配置文件中添加`&lt;interceptor-ref name="validation"/&gt;`到默认栈中来实现。 4. **生成校验脚本**:Struts2会自动将校验规则转换为JavaScript代码,并插入到页面中。为了...

    day023-xml解析笔记和代码.rar

    标签不能交叉嵌套使用(标签名字随便定义) 1. 双标签 : &lt;双标签&gt;双标签&gt;一般是有下一级的 2. 单标签 :&lt;单标签/&gt; 如果没有下一级,就可以用单标签 3.有开始有结束 4.不数字开头,只能以字母或...

    JSR303数据校验springboot-01-config.zip

    5. **自定义校验器**:如果预定义的注解不能满足需求,你可以创建自定义校验器。定义一个实现了`ConstraintValidator`接口的类,并使用`@Constraint`注解来声明新的校验注解。 6. **全局异常处理**:为了统一处理...

    自定义MyEclipse的DTD文档校验

    然而,在离线状态下,当遇到框架升级或引入新版本DTD(Document Type Definition,文档类型定义)时,MyEclipse的默认行为可能无法满足需求,导致文档校验失效。本文旨在深入探讨这一问题,并提供一种有效的解决方案...

    struts2 校验框架

    1. **XML验证配置**:在传统的Struts2验证中,我们通常会在Action类对应的package配置文件中添加一个`&lt;validators&gt;`元素,里面包含一系列的`&lt;field&gt;`和`&lt;field-validator&gt;`标签,用于指定要验证的字段以及相应的验证...

    springboot+dubbo+validation 进行rpc参数校验的实现方法

    在RESTful层面,SpringBoot默认集成了Hibernate Validator,可以通过在参数上添加@Validated注解来进行校验。 在Dubbo的RPC层面,参数校验遵循JSR303标准,由Hibernate Validator实现。Dubbo提供两种方式开启校验:...

    Java如何使用JSR303校验数据与自定义校验注解

    在Maven的pom.xml文件中,如果你使用的是Spring Boot,`spring-boot-starter-web`依赖会默认引入Hibernate Validator,如下所示: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-...

    24 Spring Core vs Spring MVC参数校验慕课专栏1

    默认情况下,元数据使用Java注解,但也可以通过XML进行扩展和覆盖。Bean Validation是一个运行时框架,一旦验证失败,立即返回错误信息。 Hibernate Validator是Bean Validation的参考实现,它不仅实现了JSR 303、...

    JEECG UI标签文档v3.7

    BaseTag(样式表和JS引入标签) **1.1 示例** ``` ,easyui,tools"&gt; ``` **1.2 参数** - **type**: 类型为 `string`。用于定义JS插件类型,当有多个插件时使用逗号进行分隔。此字段为必填项。 - **cssTheme**: ...

    【转】Struts2 标签库 [Tablib]

    在实际应用中,我们需要在JSP页面的顶部引入Struts2标签库,通过以下方式: ```jsp ``` 然后就可以在页面中自由使用这些标签了。为了确保标签的正确解析,还需要在项目的配置文件(如struts.xml)中声明相应的...

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    Struts2的配置文件主要分为两个部分:struts-default.xml和struts-plugin.xml,它们定义了默认行为和插件配置。用户自定义的配置通常在struts.xml或对应的package配置文件中进行,包括Action、Result、Interceptor等...

    Struts2.1讲义

    - **定义Action映射**:在`struts.xml`中通过`&lt;action&gt;`标签定义Action的映射关系,包括名称、类名以及结果配置等。 - **配置拦截器栈**:通过`&lt;interceptors&gt;`和`&lt;interceptor-stack&gt;`标签配置拦截器及其顺序。 ...

    springmvc4与hibernate validation校验器完全兼容jar包

    Spring MVC 是一个强大的Java web应用程序开发...通过引入正确的jar包并进行简单的配置,就可以享受到这一强大功能带来的便利。在实际项目中,正确理解和运用这一技术,对于构建健壮且用户体验良好的Web应用至关重要。

    SpringMVC使用JSR-303进行验证Bean.docx

    需要注意的是,`@Email`注解默认允许空字符串通过验证,如果不希望这样,可以自定义校验规则或使用其他验证注解。 为了在SpringMVC中使用这些注解进行验证,我们需要在配置中开启`@Valid`支持。这可以通过在Spring...

    SpringMVC实现Validation校验过程详解

    -- 指定校验使用的资源文件,如果不指定则默认使用classpath下的ValidationMessages.properties --&gt; ``` 在上面的配置中,我们使用 `LocalValidatorFactoryBean` 创建了一个 Validator,并指定了 Hibernate...

    自定义 validate验证 struts1框架

    Struts1是一个经典的Java Web开发框架,它引入了MVC(Model-View-Controller)设计模式,使得开发者能够更有序地组织代码,并提高了代码的可维护性和可复用性。在Struts1中,`validate`是用于业务逻辑校验的重要机制...

    android ssl证书验证

    5. **忽略证书验证**:虽然在某些测试环境中,可能会选择忽略证书验证以简化开发流程,但这不应该在生产环境中使用,因为它会引入严重的安全风险。只有在完全理解风险并采取适当措施的情况下,才应考虑这样做。 6. ...

    SpringBoot 整合 TrueLicense 实现 License 的授权与服务器许可1

    这个依赖提供了核心的许可管理功能,但默认的`de.schlichtherle.license.LicenseManager.verify`方法仅检查许可文件的有效性和过期时间,这可能不足以满足实际项目的需求。 为了实现更严格的许可校验,例如检查...

Global site tag (gtag.js) - Google Analytics