Загрузка правильного контекста в Spring.NET Validation - PullRequest
0 голосов
/ 03 ноября 2010

Проблема: выдается это исключение, когда я пытаюсь проверить бизнес-объект с именем StudyEnvironment с помощью проверки Sprint.NET из файла конфигурации. 'StudyEnvironment' node cannot be resolved for the specified context [Validation.Models.StudyEnvironment]. Ниже приведены шаги для воспроизведения исключения, которое выдается в последней строке.

Вопрос: я что-то здесь упускаю? Нужно ли декларировать мой бизнес-объект в каком-то формате xml в файле конфигурации? Или Spring.NET просто выбирает это волшебным образом, я новичок в Spring.NET.

Шаг 1: Определен класс

namespace Validation.Models
{
    public class StudyEnvironment
    {
        private Guid id;
        public String Name { get; set; }


        public StudyEnvironment()
        {
            this.id = Guid.NewGuid();
        }   
    }
}

Добавлен раздел проверки в web.config

<configuration>
  <configSections>
    <sectionGroup name="spring">      
      <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
    <spring>
      <context>
        <resource uri="config://spring/objects" />
      </context>            
      <objects xmlns="http://www.springframework.net" xmlns:v="http://www.springframework.net/validation">        
        <v:group id="envValidator">
          <v:required id="environmentValidator" test="StudyEnvironment.Name">
            <v:message id="error.environmentName.required" providers="errors"/>
          </v:required>
        </v:group>
      </objects>
      <parsers>
        <parser type="Spring.Validation.Config.ValidationNamespaceParser, Spring.Core" />
      </parsers>    
    </spring>
</configuration>

Шаг 3: Валидационный звонок

StudyEnvironment env = new StudyEnvironment();
env.Name = "test";

IValidator validator = ContextRegistry.GetContext().GetObject("envValidator") as IValidator;
IValidationErrors validationErrors = new ValidationErrors();
bool isValid = validator.Validate(env, validationErrors);

1 Ответ

1 голос
/ 04 ноября 2010

попробуйте это:

<v:group id="envValidator">
   <v:required id="environmentValidator" test="Name">
      <v:message id="error.environmentName.required" providers="errors"/>
   </v:required>
</v:group>
...