JSF onmouseover和这些属性的条件格式

时间:2010-03-17 09:26:22

标签: jsf

我正在尝试根据辅助bean中的值格式化panelgrid。

我目前正在尝试将其作为onmouseover属性的值:

this.className=#{(actions.currentlySelectedActionButton == 0)?'actionButton actionButtonChosen':'actionButton'};

而CSS看起来像这样:(相关部分):

.actionButton {
    width: 100%;
    height: 20px;
    border: thin solid #000;
    cursor:default; 
}

.actionButtonChosen {
    background-color: blue; 
}

它不起作用。 发现错误的任何人都会对我有所帮助。 谢谢!

编辑1 查看HTML源代码我似乎无法找到元素上列出的属性。 我将该属性指定为来自辅助bean的ValueExpression。

有效的'非值表达式'语法是:

button.setOnmouseout("this.className='actionButton'");

值表达式语法似乎根本不显示为attrbute:

    ExpressionFactory ef = FacesContext
            .getCurrentInstance().getApplication().getExpressionFactory();
    String veString = "(#{actions.currentlySelectedActionButton} = '0')?'actionButton actionButtonChosen':'actionButton'}";

    ValueExpression ve = ef.createValueExpression(FacesContext
            .getCurrentInstance().getELContext(), veString, String.class);
    button.setValueExpression("onmouseover", ve);

再次感谢。

2 个答案:

答案 0 :(得分:1)

看起来像JavaScript。因此,您基本上使用JSF / EL生成JavaScript代码。您需要验证结果是否正确(即它在语法上是否有效且可运行)。只需在您喜欢的webbrowser中打开JSF页面,右键单击它并选择查看源并验证它是否正确。你看到了什么?在生成的输出中的任何地方都应该有逻辑上 no Java / JSF / EL代码。

答案 1 :(得分:0)

好。这是我在google chrome开发人员屏幕上发现的语法问题。

"..sen':'actionButton'}"  //<--- Redundant '}'

"ctionButton} = '0'"  //<-- '=' should be '=='

除此之外,这种方法效果很好。