标签: customvalidator

在解组对象时,JAXB不会调用setter

我正在使用JAXB 2.0 JDK 6来将XML实例解组为POJO.

为了添加一些自定义验证,我已经将一个验证调用插入到属性的setter中,尽管它是私有的,但似乎unmarshaller不会调用setter但直接修改私有字段.

对我来说,每个unmarshall调用都会针对此特定字段进行自定义验证,这一点至关重要.

我该怎么办?

码:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "LegalParams", propOrder = {
    "value"
})
public class LegalParams {

    private static final Logger LOG = Logger.getLogger(LegalParams.class);

    @XmlTransient
    private LegalParamsValidator legalParamValidator;

    public LegalParams() {

        try {
            WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
            LegalParamsFactory legalParamsFactory = (LegalParamsFactory) webApplicationContext.getBean("legalParamsFactory");
            HttpSession httpSession = SessionHolder.getInstance().get();
            legalParamValidator = legalParamsFactory.newLegalParamsValidator(httpSession);
        }
        catch (LegalParamsException lpe) {
            LOG.warn("Validator related error occurred while attempting to construct a new instance of LegalParams");
            throw new IllegalStateException("LegalParams creation failure", lpe);
        }
        catch (Exception …
Run Code Online (Sandbox Code Playgroud)

java setter jaxb customvalidator

9
推荐指数
1
解决办法
9186
查看次数

asp.net中的复选框自定义验证器

我使用了自定义验证器

 protected void cvIsActive_ServerValidate(object source,ServerValidateEventArgs args)
        {
            if(args.Value.Length==1)
                args.IsValid = true;
            else
                args.IsValid = false;
        }       
Run Code Online (Sandbox Code Playgroud)

这是服务器验证的代码..我已经写过检查是否已检查.我已控制验证为复选框

<asp:CustomValidator runat="server" ErrorMessage="Please Select Status" 
            ID="cvIsActive" Font-Size="Smaller" 
            onservervalidate="cvIsActive_ServerValidate" ControlToValidate="chkIsActive"></asp:CustomValidator>
Run Code Online (Sandbox Code Playgroud)

但是一旦页面加载就会给出错误

Control 'chkIsActive' referenced by the ControlToValidate property of 'cvIsActive' cannot be validated. 
Run Code Online (Sandbox Code Playgroud)

asp.net checkbox customvalidator

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

为customvalidator设置errormessage?

我想使用customvalidator控件来处理我的所有验证,但我无法弄清楚如何在代码隐藏中设置错误消息以进行不同的检查.这可能吗?

asp.net validation webforms customvalidator

9
推荐指数
1
解决办法
9774
查看次数

将错误消息添加到自定义验证器

我有一个自定义验证器,我试图输出错误信息,但它失败但无法这样做.有人可以告诉我,如果我在正确的地方这样做.

class User < ActiveRecord::Base
  self.table_name = "user"

  attr_accessible :name, :ip, :printer_port, :scanner_port

  validates :name,        :presence => true,
                          :length => { :maximum => 75 },
                          :uniqueness => true                          

  validates :ip,          :length => { :maximum => 75 },
                          :allow_nil => true     

  validates :printer_port, :presence => true, :if => :has_association? 

  validates :scanner_port, :presence => true, :if => :has_association?          

  def has_association?
    ip != nil
  end
end
Run Code Online (Sandbox Code Playgroud)

我有如下:

validates :printer_port, :presence => true, :message => "can't be blank", :if => :has_wfm_association?
Run Code Online (Sandbox Code Playgroud)

但是收到了一个错误

Unknown validator: …
Run Code Online (Sandbox Code Playgroud)

customvalidator custom-errors rspec2 ruby-on-rails-3

9
推荐指数
1
解决办法
4770
查看次数

CustomValidator效果不佳

我有以下几片asp:

<asp:ValidationSummary ID="RegisterUserValidationSummary" runat="server" CssClass="failureNotification" 
        ValidationGroup="RegisterUserValidationGroup"/>
Run Code Online (Sandbox Code Playgroud)

...

<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserNameTB">Username:</asp:Label>
<asp:TextBox ID="UserNameTB" runat="server" CssClass="textEntry"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="UserNameTB" 
      ValidationExpression="[a-zA-Z]{3,8}" ErrorMessage="Username must be between 3 to 8 chars" runat="server"
      CssClass="failureNotification" ToolTip="Username must be between 3 to 8 chars" ValidationGroup="RegisterUserValidationGroup">
    *</asp:RegularExpressionValidator>
<asp:CustomValidator ID="NoUserValidator" ControlToValidate="UsernameTB" runat="server" ErrorMessage="User Taken!" CssClass="failureNotification" 
      ValidationGroup="RegisterUserValidationGroup"  OnServerValidate="UserValidate">*</asp:CustomValidator>
Run Code Online (Sandbox Code Playgroud)

然后功能:

protected void UserValidate(object source, ServerValidateEventArgs args)
    {
        SqlDataSource1.SelectCommand = "SELECT ClientID FROM [Clients] WHERE Username= '" + UserNameTB.Text + "'";
        DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
        if (dv.Table.Rows.Count != 0)
            args.IsValid = false; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net customvalidator custom-validators

9
推荐指数
1
解决办法
6584
查看次数

在客户端启用/禁用RequiredValidator /不启动CustomValidator

我有一个下拉菜单,用户选择一个国家/地区.这是一个必需的"领域".

在它旁边,有一个名为State的文本字段.如果用户选择US,则需要字段State.如果用户选择例如瑞典,则不需要国家,因为瑞典没有州.

示例代码:

<asp:DropDownList runat="server" ID="Country"></asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="Country"
                runat="server" Display="Static" ErrorMessage="Required field" />

<asp:TextBox runat="server" ID="State"></asp:TextBox>
<asp:CustomValidator ClientValidationFunction="DoesntGetFiredIfStateIsEmpty"
                runat="server" Display="Static" ErrorMessage="Required field" />

<!-- SO, RATHER THIS TOGETHER WITH CONDITIONAL FIRING -->
<asp:RequiredFieldValidator ControlToValidate="State"
                runat="server" Display="Static" ErrorMessage="Required field" />
Run Code Online (Sandbox Code Playgroud)

我向您提出的问题是:如果CustomValidator为空,我该如何进行防火验证?

或者说更简单:如何有条件地使RequiredValidator火灾?

或者最简单:如何在客户端启用/禁用RequiredValidator?

asp.net customvalidator requiredfieldvalidator

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

如何阻止Ninject重写自定义DataAnnotationsModelValidatorProvider?

我有一个自定义DataAnnotationsModelValidatorProvider,用于以更动态的方式进行模型验证,然后只添加属性.我试图将我的提供添加到global.asax.cs,如下所示:

ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());
Run Code Online (Sandbox Code Playgroud)

但是一旦我加载了表单,我就会收到一条错误消息:"不显眼的客户端验证规则中的验证类型名称必须是唯一的.以下验证类型不止一次出现:必需".

根据这篇博客的评论,这是因为Ninject重写了自定义验证器提供商.

我是MVC的新手,我似乎无法找到告诉Ninject接受我的自定义提供商的方法,我将如何解决这个问题?

为了记录:我不想使用Fluentvalidation.net,我想坚持使用默认的MVC验证(大多数情况下).

ninject customvalidator ninject.web.mvc asp.net-mvc-3

7
推荐指数
2
解决办法
2234
查看次数

修剪除具有NoTrim属性的输入字段以外的每个输入字段

我正在开发一个我没有创建的ASP.NET MVC 2应用程序.在模型绑定期间修剪应用程序中的所有输入字段.但是,我想要一个NoTrim属性来阻止修剪某些字段.

例如,我有以下状态下拉字段:

<select name="State">
    <option value="">Select one...</option>
    <option value="  ">International</option>
    <option value="AA">Armed Forces Central/SA</option>
    <option value="AE">Armed Forces Europe</option>
    <option value="AK">Alaska</option>
    <option value="AL">Alabama</option>
    ...
Run Code Online (Sandbox Code Playgroud)

问题是当用户选择"国际"时,我得到验证错误,因为两个空格被修剪,State是必填字段.

这是我希望能够做到的:

    [Required( ErrorMessage = "State is required" )]
    [NoTrim]
    public string State { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所获得的属性:

[AttributeUsage( AttributeTargets.Property, AllowMultiple = false )]
public sealed class NoTrimAttribute : Attribute
{
}
Run Code Online (Sandbox Code Playgroud)

在Application_Start中设置了一个自定义模型绑定器:

protected void Application_Start()
{
    ModelBinders.Binders.DefaultBinder = new MyModelBinder();
    ...
Run Code Online (Sandbox Code Playgroud)

以下是修剪模型活页夹的一部分:

protected override void SetProperty( ControllerContext controllerContext,
                                     ModelBindingContext bindingContext,
                                     PropertyDescriptor propertyDescriptor,
                                     object value …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc customvalidator custom-attributes model-binding data-annotations

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

ASP.NET自定义验证器+ WebMethod + jQuery

我正在尝试实现一个.NET自定义验证器,它使用$ .ajax在同一页面上查询WebMethod并返回一个布尔值来指示结果是true还是false.

我使用的WebMethod非常简单

[WebMethod()]
public static bool IsPromoValid(string code)
{
    string promoCode = "ABCDEFG";
    bool result = code.ToLower() == promoCode.ToLower();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

CustomValidator看起来像这样

<asp:CustomValidator ID="cvPromoCode" Display="None" ControlToValidate="txtPromoCode" runat="server" ClientValidationFunction="validatePromo"
    ErrorMessage="The promo code you entered is incorrect" OnServerValidate="ValidatePromoCode" />
Run Code Online (Sandbox Code Playgroud)

和简单的$ .ajax()ClientValidation函数

function validatePromo(src, args) {
    $.ajax({
        type: "POST",
        url: "Register.aspx/IsPromoValid",
        data: "{'code': '" + args.Value + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            args.IsValid = msg.d;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

问题是页面立即验证,实际上并没有等待ajax调用完成.如果页面上有任何其他错误,它会显示验证摘要,但从不显示自定义验证程序的错误消息.

我可以看到在Firebug中进行的AJAX调用,它会重新响应正确的响应(在这种情况下为true或 …

c# asp.net validation jquery customvalidator

6
推荐指数
1
解决办法
6260
查看次数

.NET Web API:如果instance为null,则类级别验证属性会导致Web API抛出ArgumentNullException

我有一个DTO类,例如,看起来像这样:

public class ExampleDto
{
    [DataMember(Name = "Date", IsRequired = true, Order = 1), Required]
    public DateTime Date { get; set; }

    [DataMember(Name = "ParentExample", IsRequired = false, Order = 2, EmitDefaultValue = false)]
    public Guid? ParentExampleId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

例如,如果用户提供的日期不正确,例如:

<?xml version="1.0" encoding="UTF-8" ?>
<ExampleDto xmlns="http://customurl/">
       <Date>2012-05-25T18:23:INCORRECTDATE</Date>
       <ParentExample>B62F10A8-4998-4626-B5B0-4B9118E11BEC</ParentExample>
</ExampleDto>
Run Code Online (Sandbox Code Playgroud)

或者只是一个空体,然后传递给动作的ExampleDto参数将为null(在前一种情况下,ModelState将有错误).

我将一个CustomValidationAttribute应用于该类,因此类声明如下所示:

[CustomValidation(typeof(CustomExampleValidator), "Validate")]
public class ExampleDto
Run Code Online (Sandbox Code Playgroud)

现在我添加了这个,如果ExampleDto参数为null(由于空体或序列化问题),则抛出ArgumentNullException:

<?xml version="1.0" encoding="UTF-8"?>
<Response xmlns="http://customurl" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <Type>Failure</Type>
    <Message>An unknown error has occurred</Message>
    <Errors>
        <Error>
            <Message>System.ArgumentNullException</Message>
            <MessageDetail>Value cannot be null. Parameter …
Run Code Online (Sandbox Code Playgroud)

.net customvalidator asp.net-mvc-4 asp.net-web-api

6
推荐指数
1
解决办法
1225
查看次数