gpt4 book ai didi

jsf-2 - 如何验证 selectOneMenu 的值?

转载 作者:行者123 更新时间:2023-12-04 23:05:42 24 4
gpt4 key购买 nike

我正在验证我的表单,我可以获得文本框的值但总是在
uiClass 变量( Error: java.lang.NullPointerException ):
任何建议?

异常(exception):

WARNING: /jsf/report/Edit.xhtml @39,99 listener="#{studentController.validate}": java.lang.NullPointerException
javax.el.ELException: /jsf/report/Edit.xhtml @39,99 listener="#{studentController.validate}": java.lang.NullPointerException
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
at com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:131)
at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2464)
at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168)
at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2116)
at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:288)
at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:246)

Caused by: java.lang.NullPointerException
at entities.StudentController.validate(StudentController.java:163)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)

@ManagedBean()
@SessionScoped
public class StudentController implements Serializable {
public void validate(ComponentSystemEvent event) {
FacesContext fc = FacesContext.getCurrentInstance();
UIComponent components = event.getComponent();

UIInput uiName = (UIInput) components.findComponent("frmStudent:name");
UIInput uiClass = (UIInput) components.findComponent("frmStudent:myclass");

String name = uiName.getLocalValue().toString();
String myclass = uiClass.getLocalValue().toString();

if (name.equals("") || name == null || name.isEmpty()) {
FacesMessage msgName = new FacesMessage("Please enter name !");
fc.addMessage(components.getClientId(), msgName);
fc.renderResponse();
} else if (myclass.equals("") || myclass == null || myclass.isEmpty()) {
FacesMessage msgClass = new FacesMessage("Please select a class !");
fc.addMessage(components.getClientId(), msgClass);
fc.renderResponse();
}
}
}

我的 XHTML
<h:message for="textPanel" style="color:red;" />
<h:panelGrid id="textPanel" columns="4">
<f:event listener="#{studentController.validate}" type="postValidate" />
<h:inputText id="name" value="#{studentController.selected.name}" size="20" />
<h:selectOneMenu id="myclass" value="#{studentController.selected.myclass}" style="width:180px;">
<f:selectItem itemLabel="Select ..." itemValue="#{null}" noSelectionOption="true" />
<f:selectItems value="#{studentController.classItems}"/>
</h:selectOneMenu>
</h:panelGrid>

最佳答案

为什么不使用必需的属性?

 <h:inputText id="name" required="true" requiredMessage="Please enter name !" value="#{studentController.selected.name}" size="20" />
<h:selectOneMenu id="myclass" required="true" requiredMessage="Please select a class !" value="#{studentController.selected.myclass}" style="width:180px;">
<f:selectItem itemLabel="Select ..." itemValue="#{null}" noSelectionOption="true" />
<f:selectItems value="#{studentController.classItems}"/>
</h:selectOneMenu>

关于jsf-2 - 如何验证 selectOneMenu 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com