2012-03-15 9 views
1

h:selectOneMenuを作成して、フォームを使用せずにデータベースに行を更新することができます。このような何か:つまりJSF - フォームのないデータベース内の行を更新する

      <h:selectOneMenu value="#{ApplicationController.setting['SessionTTL']}" onclick="#{ApplicationController.Updatesetting(SessionTTL)}"> 
           <f:selectItem itemValue="#{ApplicationController.setting['SessionTTL']}" itemLabel="#{ApplicationController.setting['SessionTTL']}" /> 
           <f:selectItem itemValue="two" itemLabel="Option two" /> 
           <f:selectItem itemValue="three" itemLabel="Option three" /> 
           <f:selectItem itemValue="custom" itemLabel="Define custom value" /> 
          </h:selectOneMenu> 

h:selectOneMenuの値は新しい選択した値を使用してSQLクエリを作成属性onclick呼び出しのJavaメソッドを変更した場合。 例はありますか?

ベストウイッシュ ピーター

答えて

1

いいえ、それはフォームなしでBeanのアクション・メソッドを呼び出すすることはできません。間違いなく<h:form>が必要です。どのような方法でも動作しないonclickのアプローチ(JSはクライアントではなくサーバーで実行)の代わりに、<f:ajax>が必要です。 listener属性があり、ajaxイベントで呼び出されるBeanアクションメソッドを指定できます。

<h:form> 
    <h:selectOneMenu value="#{ApplicationController.setting['SessionTTL']}"> 
     <f:selectItem itemValue="#{ApplicationController.setting['SessionTTL']}" itemLabel="#{ApplicationController.setting['SessionTTL']}" /> 
     <f:selectItem itemValue="two" itemLabel="Option two" /> 
     <f:selectItem itemValue="three" itemLabel="Option three" /> 
     <f:selectItem itemValue="custom" itemLabel="Define custom value" /> 
     <f:ajax listener="#{ApplicationController.Updatesetting('SessionTTL')}" /> 
    </h:selectOneMenu> 
</h:form> 

(ちなみに、大文字メソッド名が悪い命名規則で、私はそれを小文字にお勧めしたい。同じことは、マネージドBean名に適用されます)

をすることができます場合は、私は思います一歩踏み込んで、HTTP、HTML、CSS、JavaScriptなどの基本的なWeb開発原則を学ぶことをお勧めします。 JSFは、すべてのHTML/CSS/JSコードを自動生成し、すべてのHTTP要求/応答処理を考慮に入れるコンポーネントベースのMVCフレームワークであることを正しく理解する必要があります。

関連する問題