如何将参数值传递给java中的转换类

  • 本文关键字:java 转换 参数 值传 jsf
  • 更新时间 :
  • 英文 :


我试图将值传递给JSF/SEAM中的转换类

public class ValueConverter implements Converter {
public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {
    if (StringUtils.isNotBlank(value)) {
    // logic etc here.
我的xhtml是:
<f:converter converterId="ValueConverter">
<f:attribute name="theMaxOrderSize" id="maxorder" value="#{_cartItem.item.maxOrderSize}"/>
</f:converter>

如何将参数值传递给java中的转换类?我一开始就错了吗?我想我使用的是JSF 1.2 .

Bhesh完全正确。您应该在Validator中执行验证工作。

对于具体问题,将<f:attribute><f:converter>(或者<f:validator>,如果你在听我们的话)移到输入分量中,然后使用UIComponent#getAttributes()来获得它。例如

<h:inputText ...>
    <f:validator validatorId="valueValidator" />
    <f:attribute name="theMaxOrderSize" id="maxorder" value="#{_cartItem.item.maxOrderSize}"/>
</h:inputText>

Object theMaxOrderSize = component.getAttributes().get("theMaxOrderSize");
// ...

(其中componentvalidate()方法的UIComponent参数,它代表父输入组件)

您可以将其强制转换为Integer#{_cartItem.item.maxOrderSize}表示的任何对象类型

这是你应该用Validator做的事情。转换器只是将字符串转换为对象和对象转换为字符串。您正在尝试在转换器中验证。

如何将参数值传递给java中的转换类?

这是不正确的,您不需要将参数传递给Converter。应该是-

如何在JSF中访问转换器中的参数?

你可以使用FacesContext -

context.getExternalContext().getRequestParameterMap();

我想你有很多阅读要做。祝你好运!

如果你想为你的转换器添加属性,那么使用StateHolder -

public class ValueConverter implements Converter, StateHolder {

相关内容

  • 没有找到相关文章

最新更新