Validation 将f的值更改为:selectItems为"&引用;从JSF2.15中的h:SelectOne菜单中选择导致问题的
根据这一回答: 默认情况下,JSF迭代f:selectItems中的值,以检查所选值最初是否确实在列表中 目前我有以下几点Validation 将f的值更改为:selectItems为"&引用;从JSF2.15中的h:SelectOne菜单中选择导致问题的,validation,jsf-2,myfaces,selectonemenu,Validation,Jsf 2,Myfaces,Selectonemenu,根据这一回答: 默认情况下,JSF迭代f:selectItems中的值,以检查所选值最初是否确实在列表中 目前我有以下几点 <select id="selectList" size="1"> <option value="20" selected="selected">20</option> <option value="50">50</option> <option value="100">100</o
<select id="selectList" size="1">
<option value="20" selected="selected">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
不,这不是正常的行为。然而,我无法在最新的Tomcat上再现与最新的Mojara的碰撞。如果您还告诉作为EL impl使用的容器impl/version也在这里起作用,这将非常有用。如果你将stacktrace全部发布,而不是将其过度概括为“崩溃”,这将非常有帮助。添加额外的信息,还可能在另一台机器上用虚拟项目复制错误。哦,你使用的是MyFaces而不是Mojarra。你试过最新的MyFaces吗?2.1.5相当古老(已经将近3年了)。他们可能同时修复了这个bug。2.1的实施目前已经达到2.1.16。甚至还有一个2.2实现,如2.2.5.will check所示,但在我的工作中,很难使用tomcat8和mojarra 2.2.8-02来推动这样的框架升级(这就是为什么我们使用如此旧的版本),崩溃不再发生。问题是,变量的asignation仍然存在,如果变量是一个整数,它现在将保留null值。
<option value="">50</option>
This is the current bean:
package com.test.bean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
@ManagedBean
@SessionScoped
public class IndexBean {
private int selectedValue;
private int saveValue;
public void updateValues(ValueChangeEvent ev){
try{
saveValue = Integer.parseInt(((HtmlSelectOneMenu) ev.getComponent()).getValue().toString());
} catch(Exception ex){
return;
}
}
public List<SelectItem> getRowsPerPage(){
List<SelectItem> rows = new ArrayList<>();
rows.add(new SelectItem(20,"20"));
rows.add(new SelectItem(50,"50"));
return rows;
}
public int getSelectedValue() {
return selectedValue;
}
public void setSelectedValue(int selectedValue) {
this.selectedValue = selectedValue;
}
}
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:body>
<f:view>
<h:form>
<h:selectOneMenu value="#{indexBean.selectedValue}" valueChangeListener="#{indexBean.updateValues}" onchange="submit();">
<f:selectItems value="#{indexBean.rowsPerPage}"></f:selectItems>
</h:selectOneMenu>
</h:form>
</f:view>
</h:body>
</html>
sep 10, 2014 10:01:38 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalArgumentException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.el.BeanELResolver.setValue(BeanELResolver.java:129)
at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:69)
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.setValue(FacesCompositeELResolver.java:227)
at org.apache.el.parser.AstValue.setValue(AstValue.java:158)
at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.setValue(ContextAwareTagValueExpression.java:153)
at javax.faces.component.UIInput.updateModel(UIInput.java:405)
at javax.faces.component.UIInput.processUpdates(UIInput.java:327)
at javax.faces.component.UIForm.processUpdates(UIForm.java:263)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1372)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1372)
at javax.faces.component.UIViewRoot._processUpdatesDefault(UIViewRoot.java:1338)
at javax.faces.component.UIViewRoot.access$600(UIViewRoot.java:74)
at javax.faces.component.UIViewRoot$UpdateModelPhaseProcessor.process(UIViewRoot.java:1453)
at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1299)
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:799)
at org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:38)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)