我的目标是将屏幕宽度,高度等放入JSF中的会话bean中.根据我发现的例子中,要做到这一点的方法是添加一个参数去一个命令与JavaScript的是一个值.然后将该值传输到assignTo bean变量.应该使用noEscape属性,以便传递值而不是变量名.
这几乎可行.发生的事情是文字变量名称,例如"screen.height"在bean中而不是数字,例如600.我尝试更改它以便它调用脚本函数,但这没有帮助.(注意,我将params放在commandButton中,因为示例显示了这种方式,这个按钮是一个方便的地方,无论如何它都需要它).
我有以下代码
<h:commandButton value="Log In" action="#{loginBean.login}" styleClass="buttons">
<a4j:param name="w" value="getWidth()" assignTo="#{browser.screenWidth}" noEscape="true" />
<a4j:param name="h" value="screen.height" assignTo="#{browser.screenHeight}" noEscape="true" />
<a4j:param name="a" value="navigator.userAgent" assignTo="#{browser.userAgent}" noEscape="true" />
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
哪里
<script>
function getWidth() {
return screen.width;
}
</script>
Run Code Online (Sandbox Code Playgroud)
同样,具体问题是我将变量名称放入bean中,而不是变量值.任何帮助将非常感激.
我正在尝试使用primefaces对话框架来简化我的代码.我已按照primefaces 4.0用户指南中的示例进行操作,但它无效.
我几乎逐字复制了这个例子,创建了三个文件:一个带有对话框的文件,一个调用对话框的文件和一个支持bean文件.
对话框文件名为"dialog.xhtml",位于"/ Test"文件夹中,包含:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Cars</title>
</h:head>
<h:body>
Test dialog
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
基本文件名为"testDialog.xhtml",位于"/ Test"文件夹中,包含:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test Dialog</title>
<meta name="viewport" content="width=device-width"/>
</h:head>
<h:body>
<h:form>
<p:commandButton value="View Cars" actionListener="#{hostBean.view}" />
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
最后,支持bean包含:
@ManagedBean
@SessionScoped
public class HostBean implements Serializable {
public void view() {
RequestContext.getCurrentInstance().openDialog("/Test/dialog");
}
}
Run Code Online (Sandbox Code Playgroud)
当我调试它时,视图被调用但对话框没有打开.(我已将三行添加到faces-context.)
有任何想法吗?