我正在尝试使用带枚举的JSF/SelectManyCheckBox标记:
这是我的xhtml代码:
<h:form id="searchForm">
<h:panelGrid columns="2">
<h:outputText value="Searched queues" />
<h:panelGroup>
<h:selectManyCheckbox layout="pageDirection" value="#{jmsErrorController.errorSearchCriteria.searchedQueues}" converter="queueConverter">
<f:selectItems value="#{jmsErrorController.completeQueueList}" />
</h:selectManyCheckbox>
</h:panelGroup>
</h:panelGrid>
<h:commandButton action="#{jmsErrorController.search}"
value="Search !" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
我添加了另一篇文章中所述的转换器.
它似乎工作正常,但我在控制台上看到这个堆栈跟踪:
28-Jun-2013 09:07:46 com.sun.faces.renderkit.html_basic.MenuRenderer createCollection
SEVERE: Unable to create new Collection instance for type java.util.Arrays$ArrayList
java.lang.InstantiationException: java.util.Arrays$ArrayList
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at com.sun.faces.renderkit.html_basic.MenuRenderer.createCollection(MenuRenderer.java:907)
at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectManyValuesForModel(MenuRenderer.java:367)
at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectManyValue(MenuRenderer.java:129)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:315)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
at javax.faces.component.UIInput.validate(UIInput.java:960)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at …
Run Code Online (Sandbox Code Playgroud) 我编写了一个异步验证器来检查输入的电子邮件是否已存在于我的数据库中。
\n\n我使用反应式表单 api 来构建我的表单,并将异步验证器配置为仅在“模糊”时触发。正如角度文档中提到的
\n\n它运行良好:当我离开该字段时会触发验证,但直到我与表单交互时才会显示错误消息。
\n\n如果我在验证中使用 setTimeout 函数手动触发changeDetection,它就会起作用。
\n\n知道为什么验证完成后不直接显示此错误吗?
\n\n这是我的表单定义:
\n\nprivate initPersonalInformationFormGroup() {\n this.personalInformationFormGroup = this._formBuilder.group({\n lastName: [\'\', Validators.required],\n firstName: [\'\', Validators.required],\n gender: [Gender.MALE],\n birthDate: [\'\'],\n birthPlace: [\'\'],\n nationality: [\'\'],\n inss: [\'\', [Validators.minLength(11), Validators.maxLength(11), Validators.pattern(\'[0-9]{11}\')]],\n email: [\'\', {\n validators: [Validators.required, Validators.email],\n asyncValidators: [this._studentEmailValidator()],\n updateOn: \'blur\'\n }],\n phoneNumber: [null, Validators.pattern(\'\\\\+32[1-9][0-9]{7,8}\')],\n address: this._formBuilder.group({\n street: [\'\', [Validators.maxLength(60)]],\n houseNumber: [\'\', [Validators.maxLength(10)]],\n city: [\'\', [Validators.maxLength(60)]],\n postalCode: [null, [Validators.min(1000), Validators.max(9999)]],\n }, {\n validators: this._completeAddressValidator()\n }),\n previousSchool: [\'\', Validators.maxLength(60)],\n additionalInformation: …
Run Code Online (Sandbox Code Playgroud) 这是我在DDD上的第一次尝试,我想获得有关建模问题的建议。
这是我的专长:多所学校的管理。
2017-2018
的实例)我的第一个疑问是对schoolYear的建模。
我已经将学校实体作为根集合。我的第一个方法是让学校聚合处理增加的schoolYear(这样我就可以避免重复,或者可以创建下一个schoolYear,……)
=> schoolYear是学校总数的一部分
但是后来我不得不对课程和学生分数进行建模……这取决于学校的年份。
因此,在我的所有班级中,我必须保留对schoolYear的引用……这违反了规定
“无法从外部汇总中引用内部实体。”
在我的领域中,很多实体都取决于特定的SchoolYear。也许应该是一个汇总……
另一方面,给定班级的schoolYear用于搜索班级。
我可以获取有关此建模问题的一些建议吗?
另一个有疑问的问题是关于schoolYear的身份。
有什么建议吗?
非常感谢您帮助我进入DDD世界!
angular ×1
asynchronous ×1
collections ×1
entity ×1
jsf ×1
jsf-2 ×1
reference ×1
validation ×1