use*_*507 3 ajax richfaces jsf-2
我正在使用带有丰富面孔的JSF2 4.我的目标是使用ajax将后端中的方法生成的请求ID显示到输入文本字段中.
这是我的代码片段:
....
<h:outputText value="Drawer No" />
<h:outputText value="*" style="color:#ff0000;"/>
<h:inputText id="drawer" value="#{requestBean.drawerNumber}" required="true"
requiredMessage="Please enter drawer number">
<f:ajax event="change" action="#{requestBean.generateRequestId}"
execute="@form" render="requestId"/>
</h:inputText>
<h:outputText value="Request Id" />
<h:inputText id="requestId" value="#{requestBean.requestId}" readonly="true" required="true" >
</h:inputText>
</td>
<td>
<h:message for="requestId" style="color:red;font-size:10pt"/>
....
Run Code Online (Sandbox Code Playgroud)
豆:
public void generateRequestId(ActionEvent e)
{
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
String emp=(String) session.getAttribute("loginUser");
System.out.println("inside ajax event" + emp);
try {
requestId = AdminDAO.getRequestId(emp);
} catch (ParseException e1) {
e1.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
一旦调用该方法,它将生成一个请求ID,需要将其呈现回请求ID.
这段代码甚至没有调用方法,如果我用<a4j:ajax
而不是f:ajax
,它告诉我方法不存在.
这里,
<f:ajax event="change" action="#{requestBean.generateRequestId}"
execute="@form" render="requestId"/>
Run Code Online (Sandbox Code Playgroud)
该action
属性是错误的.你可能会混淆<h:commandButton action>
.您需要该listener
属性.
<f:ajax listener="#{requestBean.generateRequestId}"
execute="@form" render="requestId" />
Run Code Online (Sandbox Code Playgroud)
(请注意,我删除了该event
属性;它已默认为change
以防万一<h:inputText>
)
和这里,
public void generateRequestId(ActionEvent e)
Run Code Online (Sandbox Code Playgroud)
这个ActionEvent
论点是错误的.你可能会混淆<h:commandButton actionListener>
.你需要AjaxBehaviorEvent
参数.
public void generateRequestId(AjaxBehaviorEvent e)
Run Code Online (Sandbox Code Playgroud)
如果您不需要任何东西,如果有必要,您也可以完全删除它.这是可选的.
public void generateRequestId()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10356 次 |
最近记录: |