相关疑难解决方法(0)

JSF:如何验证字段并通过bean验证返回错误消息?

我有一个联系表单,我有一些由bean验证验证的字段,如何在提交后返回bean验证错误消息?

例如:

<h:form>
    <h:inputText id="name" value="#{contact.client.name}"></h:inputText>Name (Required)
    <h:inputText id="email" value="#{contact.client.email}"></h:inputText>E-Mail (Required)
    <h:inputText id="website" value="#{contact.client.website}"></h:inputText>Website (Optional)
    <h:inputText id="text" value="#{contact.client.text}"></h:inputText>Message (Required):

    <h:commandButton value="Send" action="#{contact.sendMessage}" >
        <f:ajax execute="@form" render="@form"/>
    </h:commandButton>

</h:form>
Run Code Online (Sandbox Code Playgroud)

这就是我验证字段的方式:

        // Client.java (model)
    @NotNull(message="Please provide your name")
    private String name;

    @NotNull(message="Please provide your email")
    @Pattern(regexp = "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)", message = "Invalid e-mail")
    private String email;

    @Pattern(regexp = "(http[s]?://|ftp://)?(www\\.)?[a-zA-Z0-9-\\.]+\\.([a-zA-Z]{2,5})$", message = "Not valid URL")
    private String website;

    @NotNull(message="Please provide your message")
    private String text;
Run Code Online (Sandbox Code Playgroud)

java jsf bean-validation jsf-2

7
推荐指数
1
解决办法
1万
查看次数

Hibernate Validator的Spring Web MVC验证不会在BindingResult中绘制错误

我在Spring项目中一直使用Hibernate Validator.我即将JUser自动验证我的对象.即,我希望Spring验证对象并在BindigResult中设置错误.但它不起作用.

的pom.xml

<properties>
    <spring.version>4.3.5.RELEASE</spring.version>
    <spring.security.version>4.0.2.RELEASE</spring.security.version>
    <hibernate.version>4.3.11.Final</hibernate.version>
    <validation-api.version>1.1.0.Final</validation-api.version>
    <hibernate-validator.version>5.4.0.Final</hibernate-validator.version>
</properties>
....
Run Code Online (Sandbox Code Playgroud)

applicationContext.xml中

...
<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>
<context:annotation-config />
<context:component-scan base-package="my.project.controller" />
<mvc:annotation-driven validator="validator">
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages"/>
</bean>

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean>
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor">
    <property name="validator" ref="validator"/>
</bean>
<bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en" />
</bean>
Run Code Online (Sandbox Code Playgroud)

JUser.java

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;

@Entity
public class JUser implements Officeable {

   @Id
   private Long id;

   @Column(unique = true, nullable = false)
   private String username;

   private …
Run Code Online (Sandbox Code Playgroud)

validation spring spring-mvc hibernate-validator spring-validator

7
推荐指数
1
解决办法
1709
查看次数

停止tomcat时,使用spring服务获取java.io.NotSerializableException

我正在使用带有JSF 2的spring 3,并且我用spring bean替换了JSF托管bean,通过在bean的顶部添加:

@Component("mybean")
@Scope("session")
Run Code Online (Sandbox Code Playgroud)

在我的bean中,我正在自动装配一个spring服务(使用注释@service声明)

好吧,一切都运行良好的服务,但当我试图停止tomcat 6,我得到这个例外与我的春季服务

java.io.NotSerializableException
Run Code Online (Sandbox Code Playgroud)

任何想法为什么我得到这个例外,以及如何解决它.

更新:

在使我的服务实现可序列化后,有时我得到以下异常:

java.lang.IllegalStateException: Cannot deserialize BeanFactory with id org.springframework.web.context.WebApplicationContext:/spring_faces: no factory registered for this id
    at org.springframework.beans.factory.support.DefaultListableBeanFactory$SerializedBeanFactoryReference.readResolve(DefaultListableBeanFactory.java:972)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
    at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480)
    at org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor.readObject(AbstractBeanFactoryPointcutAdvisor.java:98)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
    at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480)
    at org.springframework.aop.framework.AdvisedSupport.readObject(AdvisedSupport.java:550)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at …
Run Code Online (Sandbox Code Playgroud)

spring dependency-injection spring-mvc inversion-of-control java-ee

5
推荐指数
2
解决办法
2万
查看次数

@NotNull @NotBlank @Valid 在 Spring Boot Rest api 验证中不起作用

@NotNull、@NotEmpty、@NotBlank 注释在我的其余控制器中不起作用。我的要求是限制控制器的流量,当我在没有所需参数的情况下点击控制器时,会出现 400 错误。但是当我将 null 或空标头传递给控制器​​时,我没有收到 400 错误。我的控制器命中了我的处理程序类,这不是预期的行为

下面是我的控制器

@RestController
@RequestMapping("/intelligent-banking")
public class CrossSellOffersRetrievalController {


    @Autowired
    private CrossSellOffersRetrievalHandler crossSellOffersRetrievalHandler;

    @Autowired
    Environment env;

    @GetMapping(value = "/cross-sell-offers/{interactionPoint}", produces = { MediaType.APPLICATION_JSON_VALUE })
    public ResponseEntity<CrossSellOffersRetrievalResponse> getApplicableOffers(
            @RequestHeader(value = "channelId", required = true) @Valid String channelId,
            @RequestHeader(value = "clientId", required = false) String clientId,
            @RequestHeader(value = "actionId", required = true) @NotNull @NotEmpty String actionId,
            @RequestHeader(value = "customerId", required = true) @NotNull @NotBlank String customerId,
            @RequestHeader(value = "cinSuffix", required = true) @NotNull @NotBlank String cinSuffix, …
Run Code Online (Sandbox Code Playgroud)

rest spring spring-mvc spring-boot

3
推荐指数
1
解决办法
1万
查看次数