Посмотрите этот Язык Выражения
styleClass="#{obj.validationErrorMap eq null ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Даже если карта является пустой, highlight_row
стиль становится прикладным.
Таким образом, я изменился на
styleClass="#{empty obj.validationErrorMap ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Даже тогда, highlight_row
становится прикладным.
если карта empty OR null
Я не хочу, чтобы любой стиль был применен.
Какая-либо справка? и причины этого поведения?
Для обновления существующего объекта данными из исходного объекта можно использовать такие инструменты, как AutoMapper. Действие контроллера для обновления может выглядеть следующим образом:
[HttpPost]
public ActionResult Update(MyViewModel viewModel)
{
MyDataModel dataModel = this.DataRepository.GetMyData(viewModel.Id);
Mapper<MyViewModel, MyDataModel>(viewModel, dataModel);
this.Repostitory.SaveMyData(dataModel);
return View(viewModel);
}
Кроме того, что видно в приведенном выше фрагменте:
Действие контроллера является довольно тонким и проблемы разделяются: проблемы сопоставления рассматриваются в конфигурации AutoMapper, проверка выполняется ModelBinder и доступ к данным в репозитории.
-121--797246-Настоятельно рекомендую CLR через C # Джеффри Рихтера. В частности, глава 21 подробно описывает назначение и использование доменов приложений.
В ответ на ваши вопросы/вопросы:
AppDomains не защитит ваше приложение от незаконного неуправляемого кода. Если это проблема, скорее всего, потребуется использовать полную изоляцию процессов, предоставляемую ОС.
Связь между доменами приложений выполняется с помощью удаленного взаимодействия .NET для обеспечения изоляции. Это может быть через маршал по ссылке или маршал по семантике ценностей, с компромиссом между производительностью и гибкостью.
AppDomains - это облегченный способ достижения процесса, такого как изоляция в управляемом коде. AppDomains считаются легкими, поскольку в рамках одного процесса можно создать несколько доменов AppDomain, что позволяет избежать накладных расходов на ресурсы и производительность для нескольких процессов ОС. Кроме того, один поток может выполнять код в одном AppDomain, а затем в другом AppDomain, так как Windows ничего не знает о AppDomain (см. это, используя System.AppDomain.CurrentDomain)
Используйте пустой
(он проверяет и пустоту) и группирует вложенный тег Таким образом, так:
styleClass="#{empty obj.validationErrorMap ? ' ' :
(obj.validationErrorMap.contains('key') ? 'highlight_field' : 'highlight_row')}"
Если все еще напрасно (я бы затем проверил конфигурационные элементы JBoss EL), используйте «обычный» подход EL:
styleClass="#{empty obj.validationErrorMap ? ' ' :
(obj.validationErrorMap['key'] ne null ? 'highlight_field' : 'highlight_row')}"
Update : согласно комментариям, Map
оказывается фактически List
(пожалуйста, работайте над своими соглашениями об именовании). Чтобы проверить, содержит ли List
предметов «нормальный» способ EL, используйте JSTL fn: contains
(хотя явно не задокументирован, он также работает для List
).
styleClass="#{empty obj.validationErrorMap ? ' ' :
(fn:contains(obj.validationErrorMap, 'key') ? 'highlight_field' : 'highlight_row')}"