我正在用JSF做一个项目,遇到了以下问题。
当我创建以下跨度时:
<ui:composition>
<div id="header" class="header">
<p style="float: right; padding-right: 20px">
Welcome, #{infoGet.username} <span class="glyphicon glyphicon-off" style="color: darkred; cursor: pointer;" onclick="#{Login.logout()}" />
</p>
</div>
</ui:composition>
它调用这个方法logout()
public void logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("Landing.xhtml");
} catch(IOException e) {
e.printStackTrace();
}
}
然而,在页面加载时,跨度内的onClick会被自动调用,如果我这样做:
public void logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
}
并刷新页面,会话将无效。
有没有办法从span中调用方法“onClick”?我确实需要它是一个标签,这样我就可以正确使用引导图标元素。我知道onClick通常用于Javascript,但它与JSF一起使用似乎是合乎逻辑的。
编辑与解决方案通过@luiggi-mendoza
将组成更改为:
<ui:composition>
<div id="header" class="header">
<h:form style="float: right; padding-right: 20px">
<h:commandLink action="#{Login.logout()}" styleClass="clearCommand">
<span class="glyphicon glyphicon-off" style="color: darkred; cursor: pointer;" />
</h:commandLink>
</h:form>
<p style="float: right; padding-right: 20px">
Welcome, #{infoGet.username}
</p>
</div>
</ui:composition>
明确命令:
#clearCommand {
cursor: pointer;
}
保持登录状态,现在一切都解决了。
您不应该将任何表达式语言直接调用到非JSF组件中。你要找的是
<h:form>
<h:commandLink action="#{Login.logout()}" styleClass="foo">
<span style="...">logout</span>
</h:commandLink>
</h:form>
其中
foo
是一个CSS类,您可以在其中清除
背景: 我有一个支持bean,它有上传方法,可以在上传文件时监听。现在我将这个文件传递给解析器,并且在解析器中对csv文件中存在的行进行验证检查。 若验证失败,我必须记录信息并保存在数据库的日志表中。 我的最终目标: 就是在日志bean中获取会话信息,这样我就可以获取并调用将数据保存到数据库中。 正在发生什么: 在我的上传支持bean中,我正在获取会话,但当我调用解析器时,我不会传递会话信息,因为
null null null 道: 处理与业务逻辑层的所有交互的非bean对象。它加载数据bean并准备提交,等等。我通常把它作为一类公共静态方法。 转换器、验证器: null 这似乎是一般JSF应用程序所需的全部内容。我已经阅读了以下内容:http://java.dzone.com/articles/making-distinctions-between,以及这里的回复:JSF backing
问题内容: 我收到以下消息: [#| 2010-07-30T11:28:32.723 + 0000 |警告| glassfish3.0.1 | javax.faces | _ThreadID = 37; _ThreadName = Thread-1; |将不可序列化的属性值设置为ViewMap:((键:MyBackingBean,值类:foo.bar.org.jsf.MyBackingBean)|
问题内容: 我已经根据许多教程之一创建了自定义 JSF 组件(我正在使用 PrimeFaces ),并添加了一个参数,该参数已成功传递给组件。 但是我需要自定义类型的参数,而这是我在教程中找不到的,它们只处理最简单的情况。 Bean返回类型为 Image 的对象,但未调用setter。我期望这会起作用,因为否则,一个好的教程应该提到这种情况,但是现在我陷入了更严重的错误:什么也没有发生,并且日志中
我寻找过根据textView的大小自动拟合字体的解决方案,找到了很多,但没有一个支持多行并且正确地做到这一点(不截断文本,也尊重重力值)。 有没有其他人进行过这样的解决方案?
问题内容: 我正在尝试编写一个渲染器,该渲染器将处理组件上的属性。在阅读了JSF2.0并去除了必需的HTML5属性之后,我走了这条路,这似乎是正确的。这是我的自定义渲染器 并且此渲染器在faces config中注册为 这被注册罚款,那里没有问题。 我的意图是处理该属性,将其插入,然后将处理委托给super。我上面的代码不起作用,因为我在错误的位置插入了属性。必须在执行后将其插入。但是,start