国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

java - Apabila SpringMVC mengintegrasikan pengesah hibernate untuk pengesahan parameter, mengapa ia tidak membuang pengecualian secara langsung?
天蓬老師
天蓬老師 2017-06-23 09:13:55
0
2
1014

Hello semua, saya ada soalan

1

spring 4.3.7
hibernate-validator-5.4.1

2. Konfigurasi adalah seperti berikut

    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource" name="messageSource">
        <property name="basenames">
            <list>
                <value>classpath:messages/messages</value>
                <value>classpath:messages/ValidationMessages</value>
            </list>
        </property>
        <property name="useCodeAsDefaultMessage" value="false" />
        <property name="defaultEncoding" value="UTF-8" />
        <property name="cacheSeconds" value="60" />
    </bean>

    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
        <property name="validationMessageSource" ref="messageSource"/>
    </bean>
    
    
    <mvc:annotation-driven validator="validator" />

3.kacang dan Pengawal

public class UserRequest {
    
    @NotBlank(message = "{login.valid.username.notnull}")
    private String username;
    
    @NotBlank(message = "{login.valid.password.notnull}")
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ResponseBody
    public Object login(@Valid @RequestBody UserRequest ur, BindingResult result, HttpServletRequest request) {
        
        log.debug("login");
        
        if(result.hasErrors()) {  
            return result.getAllErrors().get(0);  
        } 
        
        ……
    }

Soalan:

Mengapa kita mesti menggunakan result.hasErrors() untuk memaparkan pertimbangan dalam kod?
Bukankah lebih munasabah untuk mengesahkan bahawa medan dalam UserRequest tidak memenuhi definisi dan hanya membuang pengecualian secara langsung?

天蓬老師
天蓬老師

歡迎選擇我的課程,讓我們一起見證您的進步~~

membalas semua(2)
Peter_Zhu

Soalan:
Mengapa kita mesti menggunakan result.hasErrors() untuk memaparkan pertimbangan dalam kod?
Bukankah lebih munasabah untuk mengesahkan bahawa medan dalam UserRequest tidak memenuhi definisi dan hanya membuang pengecualian secara langsung?

Sebagai contoh, apabila pengecualian parameter berlaku, perkara yang kami kembalikan ke bahagian hadapan ialah nama parameter khusus dan perihalan pengecualian, bukan semua maklumat pengecualian yang diberikan oleh Spring Jika Spring secara automatik membuang pengecualian, maka ia adalah sukar untuk anda untuk mengawal maklumat yang dikembalikan.

@PostMapping(UriView.REST_KNOWLEDGE_POINTS)
@ResponseBody
public Result createKnowledgePoint(@Valid KnowledgePoint knowledgePoint, BindingResult bindingResult) {
    // 如有參數(shù)錯誤,則返回錯誤信息給客戶端
    if (bindingResult.hasErrors()) {
        return Result.fail(CommonUtils.getBindingMessage(bindingResult));
    }

    knowledgePoint.setKnowledgePointId(CommonUtils.uuid());
    knowledgePoint.setName(knowledgePoint.getName().trim());
    mapper.createKnowledgePoint(knowledgePoint);

    return Result.ok("", knowledgePoint);
}

/**
 * BindingResult 中的錯誤信息很多,對用戶不夠友好,使用 getBindingMessage()
 * 提取對用戶閱讀友好的定義驗證規(guī)則 message。
 *
 * @param result 驗證的結(jié)果對象
 * @return 驗證規(guī)則 message
 */
public static String getBindingMessage(BindingResult result) {
    StringBuffer sb = new StringBuffer();

    for (FieldError error : result.getFieldErrors()) {
        // sb.append(error.getField() + " : " + error.getDefaultMessage() + "\n");
        sb.append(error.getDefaultMessage() + "\n");
    }

    return sb.toString();
}
三叔

Anda hanya pertimbangkan mengapa dalam senario aplikasi anda Satu rangka kerja lebih kepada mempertimbangkan perkara yang paling munasabah pada kebanyakan masa.

Kebanyakan pengesahan data pelanggan tidak boleh dianggap sebagai "keabnormalan", tetapi ralat yang dibenarkan dilakukan oleh pengguna tanpa mengetahuinya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan