Primefaces InputTextarea有条件地设置maxlength

时间:2017-10-24 14:25:47

标签: primefaces jsf-2

我想定义一个依赖于Primefaces InputTextarea的自己的textarea组件。我想在我的textarea组件中设置maxlenght p:inputTextarea时才设置它。

我想仅在属性可用时才在p:inputTextarea组件上设置maxlength。我试过以下:

<p:inputTextarea maxlength="#{maxlength not empty ? maxlength : null}"...>

如果设置了值,则此方法有效,但未设置时,primefaces组件的值设置为0,因此无法输入。

我尝试过的另一种方法是设置属性如下:

<c:if test="#{not empty maxlength}">
    <f:attribute name="maxlength" value="#{maxlength}"/>
</c:if>

但是当设置了maxlength时,这给了我一个例外:

  

ServletException:java.lang.String无法强制转换为java.lang.Integer

如果属性是在我自己的组件中定义的,我该如何设置属性?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,我应该在inputTextarea周围使用c:if

<c:if test="#{not empty maxlength}">
    <p:inputTextarea maxlength="#{maxlength not empty ? maxlength : null}" ...>
</c:if>

<c:if test="#{empty maxlength}">
    <p:inputTextarea ...>
</c:if>