我有两个单选按钮,默认情况下没有选中任何一个,并且必须选择其中一个,所以这就是我所做的:
<div id="payment_method">
<h:message for="sel_payment_method" style="Color:red;"/>
<h:selectOneRadio id="sel_payment_method" required="true" requiredMessage="Please select a payment method" value="#{myBean.selectedPaymentMethod}">
<f:selectItem itemLabel="Debit or Credit Card" itemValue="credit" />
<f:selectItem itemLabel="Checking Account" itemValue="checking" />
<f:ajax event="change" render="credit_inputs_fragment checking_inputs_fragements" />
</h:selectOneRadio>
</div>
Run Code Online (Sandbox Code Playgroud)
该selectedPaymentMethod属性是一个字符串,其默认值为null
而credit_inputs_fragment是一个包含div的ui:fragement
问题:点击单选按钮时,要更改的两个片段不受影响.
请指教,谢谢.
我想将参数从一个页面传递到另一个页面.
每个页面都有一个ViewScoped JSF Backing Bean.
虽然,我尝试使用<f:param>我得到以下错误:当我点击<h:commandLink>将导航到另一个页面.
错误:
] Root cause of ServletException.
com.sun.faces.mgbean.ManagedBeanCreationException: Unable to create managed bean ReservationActionBean. The following problems were found:
- The scope of the object referenced by expression #{param.resvDataModel}, request, is shorter than the referring managed beans (ReservationActionBean) scope of view
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:265)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
.........
Run Code Online (Sandbox Code Playgroud)
page1.xhtml
<p:panelGrid style="margin-top:-1px;" id="dashboard">
<ui:repeat value="#{DashBoard.dayList}" var="day">
<p:row>
<p:column style="background:#C1CDCD;width:100px;">
<h:outputText value="#{day}" style="color:#333333;font-size:13px;">
<f:convertDateTime type="date" pattern="EEE, yyyy-MM-dd"/>
</h:outputText> …Run Code Online (Sandbox Code Playgroud) 我有一个JSF应用程序,它有几个JSF页面.当我点击页面加载一个新页面时,我等待1-2秒加载新页面,我看到白色屏幕.我怎么能解决这个缓慢加载?例如,我可以在加载新页面时在屏幕中央显示"正在加载..."并刷新屏幕而不显示白色显示吗?什么是最佳做法?
我想阻止直接访问我的项目中的*.xhtml文件.在页面中,有一些commandLinks调用某些bean的某些方法.这些bean将视图的名称作为字符串返回.
return "campaign.xhtml?faces-redirect=true";
Run Code Online (Sandbox Code Playgroud)
如果用户写入以下浏览器的地址栏,我不希望用户看到xhtml文件.
http://localhost:8080/myApp/faces/campaign.xhtml
Run Code Online (Sandbox Code Playgroud)
要么
http://localhost:8080/myApp/faces/campaign.xhtml?faces-redirect=true
Run Code Online (Sandbox Code Playgroud)
因为,在某些bean中,我填写了这些xhtml视图.但是,如果用户直接访问xhtml文件,则用户将看到这些视图而没有填充的信息.
当我在web.xml文件中使用时,访问被拒绝.但是,在这种情况下,当bean返回值"campaign.xhtml?faces-redirect = true"时,它也不能同时显示视图.Bean也拒绝访问.
我该怎么做才能防止这种情况发生?
谢谢.
FarukKuşcan
如何在展示位置的仪表板中的列之间添加一行:http: //www.primefaces.org/showcase/ui/dashboard.jsf

是否可以完全显示以前创建的Facelets页面<p:dialog>?
抱歉,这是一个菜鸟问题.
我开发了一个jsf-2应用程序(在Tomcat上),它在会话范围内声明了一个大的控制器bean.
现在,我犯的错误是将所有会话作用域变量放在这个bean中作为静态变量,认为它们不会在应用程序的不同实例之间共享.但它们是 - 静态变量在同一个JVM上的应用程序的所有实例之间共享,这实际上是有意义的.无论如何,我的所有代码目前都是这样的:
@SessionScoped
@ManagedBean
public ControllerBean{
static private String aString = "session wide value for a string";
//static getter and setter for astring
}
@viewscoped
@ManagedBean
public class OneRandomViewScopedBean{
String oneString = ControllerBean.getAString();
//operations on this string...
ControllerBean.setAString(newValueForString);
}
Run Code Online (Sandbox Code Playgroud)
我是否可以获得有关如何重构代码以删除ControllerBean中的静态变量的指示?我想解决方案很简单但我现在看不到它.
注意:我不需要保留数据,因为卷很小并且在关闭应用程序后它们可能会消失
谢谢!
我试图在点击PrimeFace CommandLink时打开PrimeFace ConfirmDialog.但是当点击链接时,对话框会暂时打开,但会立即消失,我猜这个页面正在提交.这是代码:
<p:commandLink value="Delete" onclick="confirmation.show()" />
<p:confirmDialog message="Are you sure, you want to delete ?" header="Initiating deleting process" widgetVar="confirmation">
<p:commandButton value="Yes Sure" onclick="confirmation.hide()" actionListener="#{adminCtrl.deleteUserById}" update="userData" >
<f:attribute name="delete" value="#{user.userId}" />
</p:commandButton>
<p:commandButton value="Not Yet" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
Run Code Online (Sandbox Code Playgroud)
如何通过这种方式使对话框保持打开状态?
在PrimeFace ShowCase中,该示例处理CommandButton并且该工作正常,但我的要求是使用CommandLink.
可能吗?任何指针都对我很有帮助.
我有一个JSF应用程序,并希望分配给在浏览器中打开它的每个用户一个唯一的标识符.
为了实现它,我想使用全局long变量并在新用户连接到Web应用程序时递增它.
我有两个问题:
1)我应该在哪里(以哪种方法)放置增量代码?
2)如何在Web应用程序的Java类中访问该全局变量?
我使用JSF 2.0创建了一个Web应用程序.我到处都使用会话范围bean,因此我遇到了问题.:(我将用下面的例子解释.
我有dataTable中的用户列表.当我点击用户时,我会看到该用户的详细信息.现在,当我右键单击用户A并单击时Open in new tab,我会在新选项卡中看到用户A的详细信息.
现在,当我右键单击用户B并单击在新选项卡中打开时,我会看到用户B的详细信息.
但是,当我进入选项卡(用户A详细信息在那里)并刷新该页面时,我会看到用户B的详细信息.
如何克服这一点,以便如果我刷新页面,我仍然会看到用户A而不是用户B的详细信息.
jsf ×10
java ×6
jsf-2 ×6
primefaces ×3
commandlink ×1
dashboard ×1
dialog ×1
facelets ×1
java-ee-6 ×1
javabeans ×1
javascript ×1
scope ×1