【问题标题】:JSF 2.0; "argument type mismatch" from custom data type class?JSF 2.0;自定义数据类型类中的“参数类型不匹配”?
【发布时间】:2012-04-11 12:10:49
【问题描述】:

我将为我的输入字段创建一个自定义数据类型。 (见分类“金额”)。 在输入字段“amountId”中设置值确实很完美。但是,如果我想提交表单并转到另一个页面,那么我遇到了“参数类型不匹配”异常。

谁能解释一下,为什么我会得到这个异常?

  • 是否需要转换器将输入值转换为字符串?
  • 我是否忘记了 Amount 类中要实现的一些方法,哪些 JSF 需要获取值?

这是我的代码:

public class Amount implements Serializable {
    public Amount(BigDecimal bd){
    }

    public Amount(String s) {
    }

    @Override
    public String toString() {
    }
}



@ManagedBean(name="myBean")
    @RequestScoped
    public class MyBean extends BaseBean {
        private Amount amountValue;
        private UIInput amountValueId;

        public Amount getAmountValue() {
            return amountValue;
        }

        public void setAmountValue(Amount amountValue) {
            this.amountValue = amountValue;
            if (this.amountValueId != null)
                this.amountValueId.setSubmittedValue(amountValue);
        }

        public UIInput getAmountValueIdId() {
            return amountValueId;
        }

        public void setAmountValueId(UIInput amountValueId) {
            this.amountValueId = amountValueId
        }
    }



<h:inputText id="amountValueId" binding="#{myBean.amountValueId}" size="30" value="#{myBean.amountValue}" />




javax.servlet.ServletException: javax.el.ELException: java.lang.IllegalArgumentException: argument type mismatch
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:229)
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)


org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.ELException: java.lang.IllegalArgumentException: argument type mismatch
    org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.setValue(ContextAwareTagValueExpression.java:166)
    javax.faces.component.UIInput.updateModel(UIInput.java:406)
    javax.faces.component.UIInput.processUpdates(UIInput.java:328)
    javax.faces.component.UIForm.processUpdates(UIForm.java:263)
    javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1469)
    javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1469)
    javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1469)
    javax.faces.component.UIViewRoot._processUpdatesDefault(UIViewRoot.java:1397)
    javax.faces.component.UIViewRoot.access$600(UIViewRoot.java:74)
    javax.faces.component.UIViewRoot$UpdateModelPhaseProcessor.process(UIViewRoot.java:1535)
    javax.faces.component.UIViewRoot._process(UIViewRoot.java:1358)
    javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:806)
    org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:38)
    org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
    org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)

【问题讨论】:

  • 我认为您应该将转换器添加到您的 mkyong.com/jsf2/custom-converter-in-jsf-2-0 导致您尝试将字符串提交到 Amount 对象
  • 哦,转换器帮了我 :) 非常感谢!!

标签: jsf-2 illegalargumentexception


【解决方案1】:

我认为您应该将转换器添加到您的&lt;h:inputText 看看这个Custom converter in JSF 2.0 因为您尝试将String 提交到Amount 对象中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 2020-10-02
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多