如何创建“编辑”按钮,以便在单击该按钮时将 更改h:outputText为h:inputText?
我有以下XHTML:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<title>TODO supply a title</title>
</head>
<body>
<f:metadata>
<f:viewParam id="productCV" name="productName" value="#{productBean.product}"
converter="#{productConverter}" required="true"/>
</f:metadata>
<ui:composition template="/templates/mastertemplate.xhtml">
<!-- Define the page title for this page-->
<ui:define name="pageTitle">
<h:outputFormat value="#{msgs.productPageTitle}">
<f:param value="#{productBean.product.description}"/>
</h:outputFormat>
</ui:define>
<!-- Pass the categoryName parameter to the sidebar so the category of this product is highlighted-->
<ui:param name="categoryName" value="#{productBean.product.categoryName}"/>
<ui:define name="content">
<!-- If productconversion failed, show this error-->
<h:message id="error" for="productCV" style="color: #0081c2;" rendered="#{productBean.product == null}" />
<!-- If productconversion succeeded …Run Code Online (Sandbox Code Playgroud) 我很好奇如何让JSF只在页面加载时加载某些业务逻辑,而不是在单击按钮(ActionEvent)或执行时运行此代码AjaxBehaviorEvent.
我的bean在@RequestScoped使用JSF 2.1和Primefaces.
因为ActionEvent和AjaxBehaviorEvent被称为事后我不知道该怎么告诉豆在@PostConstruct那是因为事件的调用.
是因为豆子放在错误的范围内?
Java EE 规范的 Servlet、EJB 和 CDI 部分描述了 bean 管理(注入等)。但是规范也没有描述(显式或隐式)bean 容器的并发属性。如果我使用了 WildFly 或 GlassFish,那么 Java EE 应用服务器可以从一个线程访问更多的 bean 对象。
所以问题是,我是否必须对volatile所有 bean 字段使用关键字,理论上可以从多个线程访问(即对于几乎所有 bean,至少对于所有用 注释的字段@Inject)?
这两个版本的JSF(JSF 1.0和JSF 2.0)有什么区别?由于我是java的新手,我只发现建筑级别的差异.但是,从视角来看,我无法知道它对应用程序开发有多大影响?
此外,强加的MVC与JSF和Spring不同.即使JSF改进了架构,Spring仍然使用得更多.Spring的重要性在上面有什么意义?
关于jsf相关的下拉选择,我在这里遇到了一个小问题.我有2个下拉选择:第一个是独立的,第二个显示结果依赖于这是代码:
<h:panelGroup id="addressPanel">
<h:outputLabel styleClass="label" value="Provincia: " />
<h:selectOneMenu onchange="updateCombos()"
value="#{indirizzoCtrl.codiceProvincia}" >
<f:selectItem itemValue="" itemLabel=""></f:selectItem>
<f:selectItems value="#{indirizzoCtrl.allProvincia}" var="c"
itemLabel="#{c.nome}" itemValue="#{c.siglaProvincia}" />
</h:selectOneMenu>
<h:outputLabel styleClass="label" value="Comune: " />
<h:selectOneMenu
value="#{indirizzoCtrl.codiceComune}" >
<f:selectItem itemValue="" itemLabel=""></f:selectItem>
<f:selectItems value="#{indirizzoCtrl.allComuni}" var="c"
itemLabel="#{c.descrizione}" itemValue="#{c.codiceComune}" />
</h:selectOneMenu>
</h:panelGrid>
</h:panelGroup>
<p:remoteCommand name="updateCombos" update="addressPanel masterForm:msg" />
<p:commandButton styleClass="commandButton" value="Save"
actionListener="#{indirizzoCtrl.save}">
</p:commandButton>
Run Code Online (Sandbox Code Playgroud)
好吧,当用户在选择了两个值后保存表单时,托管bean indirizzoCtrl(请求作用域)无法将第二个下拉列表的值映射回列表,因为没有列表.事实上,#{indirizzoCtrl.allComuni}只有在indirizzoCtrl.codiceProvincia!=null...更新模型阶段之前,才调用从数据库检索数据的getter .因此,第一次调用列表的getter时无法检索任何值,这会使更新模型阶段失败.我怎么能处理这个场景......我认为这是一个很常见的场景,所以我在这里遗漏了一些东西......
目前,我正在为在线购物车创建一个 Web 应用程序,我需要在每个 jsf 页面上维护会话。
我的问题是:
如何在托管 bean 中创建和销毁会话
如何访问存储在会话变量中的值?像这样?
FacesContext.getCurrentInstance().getExternalContext().getSessionMap.put("key",object);
Run Code Online (Sandbox Code Playgroud)如何在 jsf 中销毁会话
我还需要使用销毁会话,session.invalidate()但我失败了!!
我有三个托管bean:一个作用域范围(S)和两个视图作用域(A,B).我想在S和B中使用A的功能,但问题是在会话范围内注入视图范围的bean是不可能的.
The scope of the object referenced by expression #{a}, view, is shorter than the referring managed beans (s) scope of session
Run Code Online (Sandbox Code Playgroud)
我不想复制A的功能.任何的想法?
我需要2.xhtml在当前 JSF 页面(例如1.xhtml)的新选项卡中打开一个新的JSF 页面(例如)。我应该使用哪个 JSF 组件?<h:commandLink>或者<h:outputLink>?
1.xhtml单击链接以2.xhtml在新选项卡中打开后,我不想失去当前页面的范围。
的豆1.xhtml是@ViewScoped。我应该把它改成@RequestScoped吗?
我正在使用JSF 2.1和Primefaces:
我有一个带有托管属性的视图作用域托管bean,以及一个在其他视图范围内的托管bean上设置内容并转发到引用该托管bean的其他页面的方法:
@ManagedBean
@ViewScoped
public class HelloMB {
@ManagedProperty("otherMB")
private OtherMB other;
public String changeOtherMB() {
otherMB.setAnyObject(new Object());
return "otherPage.xhtml";
}
}
@ManagedBean
@ViewScoped
public class OtherMB {
private Object o;
public void setAnyObject(Object o) {
this.o = o;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当渲染otherPage时o为null.
你知道我怎么能解决这个问题?如何在@ViewScoped托管bean中保留对象并将其保存在其他页面上而不使用@SessionScoped?
jsf ×9
jsf-2 ×5
view-scope ×3
java ×2
javabeans ×2
ajax ×1
cdi ×1
edit ×1
ejb ×1
frameworks ×1
invalidation ×1
jakarta-ee ×1
managed-bean ×1
navigation ×1
new-window ×1
primefaces ×1
scope ×1
session ×1
volatile ×1