実際、コードをそのまま分析すると、イベントの「おおよその」順番は次のようになります。
- ボタンをクリックします。
- フォームが送信されようとしています。
- JavaScript 関数が呼び出されるため、 your の値
div
が変更されます。
- フォームが送信されます。
- 同じビューへのポストバックが発生し、実質的に に
div
戻りましたhello
。
これがすべての仕組みです。
ちなみに、次のように、その属性を使用<div id="myDiv" onclick="Findchange()">hello</div>
してフォームを送信しないだけでなく、機能しています。<h:commandButton>
onclick
<h:commandButton value="submit" onclick="return Findchange()"/>
と
function Findchange() {
document.getElementById("myDiv").innerHTML='ravi';
return false;
}
補足として、機能を実現するための JSF の方法は、次のように div の内容を AJAX で (または代わりに同期的に) 更新することです。
<h:form id="form">
<h:panelGroup id="div-id" display="block">
#{bean.name}
</h:panelGroup>
<h:commandButton value="Submit" action="#{bean.changeName}">
<f:ajax render="div-id"/>
</h:commandButton>
</h:form>
豆入り
@ManagedBean
@RequestScoped
public class Bean {
private String name = "Josh";//getter + setter
public String changeName() {
name = "Ravi";
return null;
}
}