@ViewScoped
withのバグに遭遇したと思いますa4j:commandButton
。
データをアップロードする必要があるものを除いて、すべてのアクションが a4j を使用する非常に複雑なフォームがあります。また、コマンドの順序によっては、viewParam の検証が中断されます。
作業コードは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j" >
<f:metadata>
<f:viewParam id="viewParam" name="viewParam" value="#{bean.viewParam}" required="true" />
</f:metadata>
<h:head>
<title>Test View Param</title>
</h:head>
<h:body>
<h:message for="viewParam" />
<hr/>
<h:form>
#{bean.viewParam}<br/>
<h:commandButton value="cmdButton" />
<a4j:commandButton value="a4jBtn" execute="@this" render="@form" />
</h:form>
</h:body>
</html>
a4jBtn
問題を表示するには、 をクリックしてから をクリックしますcmdButton
。パラメータがまだそこにあることがわかります。しかし、検証は失敗します。
<t:saveState>
役に立た
<rich:message>
ず、良くもありませんが、
<h:commandButton value="ajaxBtn" ><f:ajax execute="@this" render="@form" /></h:commandButton>
それ以外の
<a4j:commandButton value="a4jBtn" execute="@this" render="@form" />
正しく動作します!
Tomcat 6.0.18 および jboss-el 2.0.0.GA で myFaces 2.0.15 および richFaces 4.2.3.Final を使用する。
f:ajax
の代わりに を使用して問題を回避できa4j:commandButton
ますが、より良いアイデアがあるか、何が問題なのかを説明していただけますか?