Seam默认使用哪些转换器将参数传递给page.xml

时间:2013-12-11 11:33:25

标签: converter seam

我对页面有这样的Seam描述:

<page xmlns="http://jboss.com/products/seam/pages"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.2.xsd"

   login-required="true" conversation-required="false" no-conversation-view-id="/home.xhtml">
    <begin-conversation join="true"/>
    <param name="reportid" value="#{filter.reportIds}" />
    <navigation from-action="#{identity.logout}">
        <redirect view-id="/login.xhtml"/>
    </navigation>
</page>

我通过参数reportid传递了网址http://localhost/home.seam?reportid=123,我想知道哪个转换器用于将其转换为字符串? 我没有找到任何有关参数的默认转换器的信息。

有人知道这是如何运作的吗?

1 个答案:

答案 0 :(得分:0)

如果没有提供特定的转换器(并且正在使用JSF),Seam会尝试从目标属性的类中推断出正确的转换器。

Seam @Converter注释提供forClass参数,告诉Seam转换器生成哪种类型。注册转换器组件时,Seam会为每种类型构建一个默认转换器列表。找到没有类型的转换器时,目标属性的类用于在此列表中查找适当的转换器。

如果没有找到目标类型的Seam转换器,那么Seam会将选择适当的转换器委托给底层的JSF实现。对于JSF 1.2 RI,这将返回bytebooleanshortintlong,{{1}的默认转换器之一}}或float,如果目标类型是其中之一。如果底层JSF实现没有找到转换器,则抛出double