問題タブ [zk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ZKGrails コンポーザーで Spring Security アノテーションを使用できますか?
ZKGrails コンポーザーで Spring Security アノテーションを使用して ajax コールバックを保護できますか、または springSecurityService を注入する必要がありますか (すべてのメソッドで手動でプリンシパルの権限を確認します)?
更新: http://felipecypriano.com/2009/10/26/tweak-zk-to-make-event-processing-call-groovys-invokemethod/によると、注釈は機能するはずで、これに記載されている変更が見つかりました現在の ZKGrails プラグイン バージョン (1.0.4) で投稿してください。それでも、コンポーザーでメソッドを保護しようとすると、完全にアクセス可能なままになります。
spring - フロー内の永続性
spring 3.0、spring-webflow 2.3、zk 5.0.7、zkspring 3.0、および休止状態で小さな Web アプリを実装しました。
フローの 1 つは、タスクを表すパネルを含むタスクボード (zk-borderlayout) を示しています。ユーザーが新しいタスクを追加すると、フロー管理の永続性を持つ新しいサブフローを開始します。新しいタスクは、フローの最後に保持されます。すべてが正常に動作します。
それに加えて、タスクのステータス (「未開始」、「進行中」など) を変更するために、ユーザーはパネルをタスクボードにドラッグ アンド ドロップすることができます。タスクの新しいステータスは、最後ではなく、前述のフロー内で保持する必要があります。コンポーネントの onDrop リスナーで DAO の特別な更新メソッド (下記参照) を呼び出すことで、この機能を実現しました。それもうまくいきます。
フロー管理の永続性に関するこの記事を読み、これがフローの前に変更を永続化する正しい方法であるかどうかを自問しました。
助言がありますか?
customvalidator - zk で複数の intbox にカスタム メッセージを使用する
同じウィンドウの親の下にいくつかの intbox があります。intbox のカスタム メッセージを含むカスタム バリデータを作成しました。エラー メッセージを表示するには、一意の ID を付けるラベルを使用します。ここで、すべての intbox に同じ制約を使用する必要があります。カスタム エラー メッセージのように、エラーを表示するための一意のラベル ID を持っているので、すべての intbox に同じメッセージを使用するにはどうすればよいですか? カスタム メッセージを含むカスタム バリデーターのコードは次のとおりです。
<zscipt> <![CDATA[
class MyConst implements Constraint, CustomConstraint {
//Constraint//
public void validate(Component comp, Object value) {
if (value == null || ((Integer)value).intValue() >8)
throw new WrongValueException(comp, "values only b/w 0 and 8");
}
//CustomConstraint//
public void showCustomError(Component comp, WrongValueException ex) {
errmsg.setValue(ex != null ? ex.getMessage(): "");
}
}
Constraint ctt = new MyConst();
]]>
ありがとう。
button - ボタンを押したときに1つのボタンを非アクティブにし、他のボタンをアクティブにして、zkで状態を保持する方法。
ウィンドウには、編集と表示の2つのボタンがあります。これで、ユーザーが「編集」ボタンを押さない限り、「表示」ボタンを無効のままにしておく必要があります。彼が編集ボタンを押すと、「表示」ボタンが有効になり、「編集」ボタンが無効になる必要があります。また、どちらかが有効になっている場合は、クリックするとリダイレクトが必要になります。また、リダイレクト後に同じページに戻ったとき、または同じページにリダイレクトされたときに、この状態が持続する必要があります(つまり、「表示」ボタンが有効で「編集」が無効)。次のことを試しましたが、エラーが発生します:「イベントリスナーはネイティブコンテンツをサポートしていません」誰かが私を助けてくれませんか。
ありがとう。
java - 選択した項目をコードで ComboBox に設定する
値リストにアイテムが1つしかない場合、コードでコンボボックスの最初のアイテムを選択したい。私はこれを試しました:
しかし、うまくいきません。コメント行も試しました:
何か助けはありますか?
ありがとう!
java - 2 つの依存コンボがある場合の ConcurrenModificationException (ZK フレームワーク)
私は2つの依存コンボを持つzulを持っています。最初のコンボ (cb_empresa_detalle) のアイテムがチェックされると、2 番目のコンボ (cb_agente_detalle) がそのアイテムをロードします。
私のコントローラーには、次のコードがあります。
このコードは、最初のコンボで異なるアイテムをチェックインすると、ConcurrenModificationException を行単位でスローします (次の 2 つのオプションを試しました)。
また、私はこれを試しました:
何か案が?
dom - Selenium Java 2.8で現在のDOMを取得するにはどうすればよいですか?
私は最新バージョンのSeleniumとを使用しchromedriver
てZKアプリケーションをテストしています。
テスト中に、DOM(またはその一部)をダンプして、必要な要素を見つけるのに役立てたいと思います(そして、おそらくテストを維持しなければならない人々を助けたいと思います)。
このメソッドWebDriver.getPageSource()
は有望に見えましたが、サーバーから送信されたHTMLのみを返し、すべてのJavaScriptコードを実行した後の結果は返しません。
JavaScriptコードが実行されます。の出力では表示されないIDで要素を見つけることができますgetPageSource()
。だから私は試しWebElement.getText()
ましたが、それは要素のテキストだけであり、要素自体やその属性ではありません。
DOMを取得することは可能ですか、それともここで鍵穴手術を行う必要がありますか?
zk - 引数を使用してマクロ コンポーネントの ID を動的に作成する
グリッドのコードのコードを 2 回複製することなく、まったく同じ機能を実行する 2 つのグリッドを作成しようとしています。そこで、マクロコンポーネントを使用することにしました。しかし、マクロ コンポーネントでコンポーネントの ID を動的に作成する方法がわかりません。コードは次のことを行います。
最初のグリッド (西の領域) には、2 つのテキスト ボックスを持つ 2 つの行があります。このグリッドの最初のテキスト ボックスに「hello」を追加すると、2 番目のテキスト ボックスの値も「hello」に設定されます。
2 番目のグリッド (中央の領域) には、2 つのテキスト ボックスを持つ 2 つの行があります。このグリッドの最初のテキスト ボックスに「world」を追加すると、2 番目のテキスト ボックスの値も「world」に設定されます。
- 最初のグリッドの両方のテキスト ボックスの値が同じになりました。つまり、「hello」です。
- 2 番目のグリッドの両方のテキスト ボックスの値は同じになりました。つまり、"world" です。
次のようなマクロ コンポーネントを使用する zul ファイルを作成しました。
マクロ コンポーネントを以下に示します。
マクロコンポーネントを作成するために次のコードも試しました
これはどれも機能しません。マクロ コンポーネントでコンポーネントの ID を動的に作成する方法がわかりません。最初のグリッドのテキストボックス ID は「newBox1」、「duplicateBox1」である必要があり、2 番目のグリッドのテキストボックス ID は「newBox2」、「duplicateBox2」である必要があります。
このタスクを達成するためのより良い方法があるかどうかを指摘してください。
ありがとう、ソニー