我正在尝试将值传递给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中的Conversion类?我开始错了吗?我在使用JSF 1.2我认为..
答案 0 :(得分:6)
Bhesh完全正确。您应该在Validator
内进行验证工作。
关于具体问题,请将<f:attribute>
移出<f:converter>
(或<f:validator>
,如果您正在收听我们)进入输入组件,然后使用{{3}获得它。 E.g。
<h:inputText ...>
<f:validator validatorId="valueValidator" />
<f:attribute name="theMaxOrderSize" id="maxorder" value="#{_cartItem.item.maxOrderSize}"/>
</h:inputText>
与
Object theMaxOrderSize = component.getAttributes().get("theMaxOrderSize");
// ...
(其中component
是UIComponent
方法的validate()
参数,它代表父输入组件
您可以将其强制转换为Integer
或#{_cartItem.item.maxOrderSize}
所代表的任何对象类型。
答案 1 :(得分:3)
这是你应该用Validator做的事情。 Converter只是从String转换为Object,Object转换为String。您正尝试在转换器中进行验证。
如何将参数值传递给java中的Conversion类?
这不正确,您不需要将参数传递给Converter。它应该是 -
如何在JSF中访问Converter中的参数?
您可以使用FacesContext -
context.getExternalContext().getRequestParameterMap();
我认为你有很多要做的事情。祝你好运!
如果要向转换器添加属性,请使用StateHolder -
public class ValueConverter implements Converter, StateHolder {