【问题标题】:Setting a variable in JSF [duplicate]在JSF中设置变量[重复]
【发布时间】:2012-08-28 12:05:43
【问题描述】:

我的 jsf 中有这样的东西:

<div title="Percentage: #{myBean.numberToBeConvertedToPercentage}"></div>

我想做这样的事情:

<h:outputText value="#{myBean.numberToBeConvertedToPercentage}">
    <f:convertNumber maxFractionDigits="2" type="percent"/>
</h:outputText>

当然,不是在输出文本中,而是将转换后的数字设置为变量,这样我就可以在我的 div 中使用它。 我不想直接从我的 bean 中获取这个转换后的数字,因为我在视图的其他地方使用它而不格式化它,并为此创建一个 get,我不喜欢这个想法。有什么办法只在我看来?

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:
    1. &lt;h:outputText&gt; + 转换器一起使用,这是JSF 中实现此目的的最佳方法。您可以重新设计您的 Html 以将标签“百分比:”和数据分开。 以使用 JS 代码中的渲染值将其传递给 'title' 属性。

      <div id="titleDiv" />
      
      <script type="text/javascript">
      $('#titleDiv').title = 'Percentage: <h:outputText value="#{myBean.numberToBeConvertedToPercentage}"><f:convertNumber maxFractionDigits="2" type="percent"/></h:outputText>';
      </script> 
      
    2. 如果您仍然希望不使用转换器,那么您可以为每个视图再创建一个 bean 并在 get 方法中呈现值。

    3. 其他选项是使用 EL 2.2 方法调用 功能并调用您自己的格式 bean

      <div title="Percentage: #{formatBean.formatNumber(myBean.numberToBeConvertedToPercentage, 2)}"></div>
      

    【讨论】:

    • 我不确定在这个构造中#1 是如何可能的。您的意思是将工具提示呈现为单独的隐藏 &lt;div&gt;/&lt;span&gt; 并使用 CSS/JS 而不是使用 title 属性显示它?
    • 哦..我错过了你需要'title',认为属性名称没有意义。在那种情况下 - 是的,渲染的数据可以传递给 JS,但我现在不喜欢数字 '1')
    • 我几乎累了,使用某种#2,使用另一个像getNumberToBeConvertedToPercentageAlreadyConverted这样的吸气剂:P#3在这种情况下看起来太过分了:P
    • @mudalov 如果我使用转换器,你有什么想法?
    【解决方案2】:

    我没有检查这个,但也许你可以使用 ui:param 并为其分配一个转换器。

    然后在你的页面中使用它

    <div title="Percentage: #{myVar}></div>
    

    Defining and reusing an EL variable in JSF page

    【讨论】:

    • 试过了,但是myVar带有原始值,而不是转换后的值=(
    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2023-03-21
    • 2014-06-29
    • 2011-06-21
    • 2018-05-23
    • 1970-01-01
    相关资源
    最近更新 更多