-
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>
2014年5月14日 12:36
2个答案 按时间排序 按投票排序
-
你要实现自定义的标签,步骤如下:
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
相关推荐
在上述配置中,`<validation>`标签指定了对执行`execute`方法时的校验,如果校验失败,结果会跳转到`/register.jsp`,即输入页面,展示错误信息。 接下来,我们创建一个对应的校验规则文件,如`register-validation...
这通常通过在`struts-default.xml`或自定义的配置文件中添加`<interceptor-ref name="validation"/>`到默认栈中来实现。 4. **生成校验脚本**:Struts2会自动将校验规则转换为JavaScript代码,并插入到页面中。为了...
标签不能交叉嵌套使用(标签名字随便定义) 1. 双标签 : <双标签>双标签>一般是有下一级的 2. 单标签 :<单标签/> 如果没有下一级,就可以用单标签 3.有开始有结束 4.不数字开头,只能以字母或...
5. **自定义校验器**:如果预定义的注解不能满足需求,你可以创建自定义校验器。定义一个实现了`ConstraintValidator`接口的类,并使用`@Constraint`注解来声明新的校验注解。 6. **全局异常处理**:为了统一处理...
然而,在离线状态下,当遇到框架升级或引入新版本DTD(Document Type Definition,文档类型定义)时,MyEclipse的默认行为可能无法满足需求,导致文档校验失效。本文旨在深入探讨这一问题,并提供一种有效的解决方案...
1. **XML验证配置**:在传统的Struts2验证中,我们通常会在Action类对应的package配置文件中添加一个`<validators>`元素,里面包含一系列的`<field>`和`<field-validator>`标签,用于指定要验证的字段以及相应的验证...
在RESTful层面,SpringBoot默认集成了Hibernate Validator,可以通过在参数上添加@Validated注解来进行校验。 在Dubbo的RPC层面,参数校验遵循JSR303标准,由Hibernate Validator实现。Dubbo提供两种方式开启校验:...
在Maven的pom.xml文件中,如果你使用的是Spring Boot,`spring-boot-starter-web`依赖会默认引入Hibernate Validator,如下所示: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-...
默认情况下,元数据使用Java注解,但也可以通过XML进行扩展和覆盖。Bean Validation是一个运行时框架,一旦验证失败,立即返回错误信息。 Hibernate Validator是Bean Validation的参考实现,它不仅实现了JSR 303、...
BaseTag(样式表和JS引入标签) **1.1 示例** ``` ,easyui,tools"> ``` **1.2 参数** - **type**: 类型为 `string`。用于定义JS插件类型,当有多个插件时使用逗号进行分隔。此字段为必填项。 - **cssTheme**: ...
在实际应用中,我们需要在JSP页面的顶部引入Struts2标签库,通过以下方式: ```jsp ``` 然后就可以在页面中自由使用这些标签了。为了确保标签的正确解析,还需要在项目的配置文件(如struts.xml)中声明相应的...
Struts2的配置文件主要分为两个部分:struts-default.xml和struts-plugin.xml,它们定义了默认行为和插件配置。用户自定义的配置通常在struts.xml或对应的package配置文件中进行,包括Action、Result、Interceptor等...
Spring MVC 是一个强大的Java web应用程序开发...通过引入正确的jar包并进行简单的配置,就可以享受到这一强大功能带来的便利。在实际项目中,正确理解和运用这一技术,对于构建健壮且用户体验良好的Web应用至关重要。
需要注意的是,`@Email`注解默认允许空字符串通过验证,如果不希望这样,可以自定义校验规则或使用其他验证注解。 为了在SpringMVC中使用这些注解进行验证,我们需要在配置中开启`@Valid`支持。这可以通过在Spring...
-- 指定校验使用的资源文件,如果不指定则默认使用classpath下的ValidationMessages.properties --> ``` 在上面的配置中,我们使用 `LocalValidatorFactoryBean` 创建了一个 Validator,并指定了 Hibernate...
Struts1是一个经典的Java Web开发框架,它引入了MVC(Model-View-Controller)设计模式,使得开发者能够更有序地组织代码,并提高了代码的可维护性和可复用性。在Struts1中,`validate`是用于业务逻辑校验的重要机制...
5. **忽略证书验证**:虽然在某些测试环境中,可能会选择忽略证书验证以简化开发流程,但这不应该在生产环境中使用,因为它会引入严重的安全风险。只有在完全理解风险并采取适当措施的情况下,才应考虑这样做。 6. ...
这个依赖提供了核心的许可管理功能,但默认的`de.schlichtherle.license.LicenseManager.verify`方法仅检查许可文件的有效性和过期时间,这可能不足以满足实际项目的需求。 为了实现更严格的许可校验,例如检查...