問題タブ [opensymphony]
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.
struts2 - StrutsSpringObjectFactory を現在の ObjectFactory として設定する
openSymphony 2.1.2 と struts 2.3.8 を使用するプロジェクトに取り組んでいます。
ただし、そのコード ベースでは、古いバージョンの openSymphony と struts 用に作成されたピース コードを適用しようとしています。
そのコードは次のとおりです。
http://www.lischke-online.de/index.php/java/action-unit-testing-with-struts-2-0-part-2
(補足として、別のフレームワークに基づくシステムで、継承したプロジェクトからの struts アクションの実行をシミュレートできるようにするために、そのコードが必要です。)
次の段落に問題があります。
2 行目で、次のエラーが表示されます。The method setObjectFactory(StrutsSpringObjectFactory) is undefined for the type ObjectFactory
ただし、ObjectFactory の javadoc を見ると、アクションの実行時に使用される特定のObjectFactory
(例: StrutsSpringObjectFactory
) を設定できる代替メソッドが見つかりません。では、新しい API でそのObjectFactory
ような特定をどのように設定すればよいでしょうか?ObjectFactory
更新されたコード:
Webアプリケーション内からテストを呼び出すときに、そのコードで得たスタックトレース(デプロイされた戦争):
更新 2:
アクションをテストできるようにしたい理由は、単にプロジェクト エクスプローラーからアクションを右クリックして、「JUnit として実行」を右クリックできるようにするためではありません。実際には、Web アプリケーションの一部としてテストを実行したいと考えています。
つまり、サービス クラスの 1 つから次のコードを呼び出そうとしています。
なぜなら、DataTest では、DataAction を execute() しようとするからです。そのアクションは、厄介なデータベースロジックを呼び出し、最終的にデータを返します。サービスのためにそのデータが必要です。Action が正確に何をするかを理解しようとする代わりに、単純に execute() してデータを取得したいと思います。私がやろうとしている方法は、アクションを実行するテストを実行することです。
私の struts.xml は、私が構築しているプロジェクトに直接含まれていません。これが私の状況です。私の新しいプロジェクトをプロジェクト A としましょう。そして、私が依存しているレガシー Struts プロジェクト、プロジェクト B. プロジェクト A は、他のフレームワーク (JSF & Spring) によって構築されています。プロジェクト B は、UI にストラットを使用します。しかし、そのアクションは非常に厄介な方法で記述されていたため、多くの DB アクセス ロジックがアクション内に直接記述されていました。したがって、プロジェクト B のロジックを使用し、それを書き直さない場合、一時的な解決策 (達成しようとしている) は、対応する要求データを使用してプロジェクト B のアクションを実行することです。その方法は、A のサービス クラス内で、B のアクションに対してテストを実行することです。
プロジェクト B は war ファイルとしてパックされているため、プロジェクト A の Maven でそれを再利用する私の方法は、プロジェクト A のオーバーレイとして定義することです。プロジェクト B のクラスパスからのクラスおよびその他のリソースは jar にパックされます。次に、プロジェクト AI でその jar に依存します。そのため、struts.xml は、プロジェクト B のクラスと xml を含む jar に存在します。コンパイル時には、プロジェクト A はプロジェクト A の jar 内の struts.xml しか見ることができません。
プロジェクト A をパックするときだけ、war B がアンパックされ、その内容 (struts.xml を含む) がプロジェクト A のターゲット フォルダーにコピーされ、A + B が 1 つの war としてパックされます。(最終戦争では、struts.xml は jar B と最終戦争内の WEB-INF/classes の両方にあります。
したがって、実際には、テストを右クリックして「junitとして実行」してテストを実行しようとすると、クラスパスの一部のWEB-INF /クラスでstruts.xmlが見つからないはずです-最初にそのようなものはありません私のワークスペース、作成された戦争でのみ。2 つ目は、(上で示したように) 戦争の中からのみテストを実行しようとすることです。当時、WEB-INF/classes/struts.xml があったのですが、なぜ見つからなかったのでしょうか?
symphony-cms - Symphony CMS ファイル アップロードの致命的なエラー
ファイル、特に画像をアップロードできるセクションを作成しようとしています。問題なくセクションを作成できます。問題は、新しいエントリを作成してファイルを選択するときです。エントリを保存するために [保存] をクリックすると、非常に奇妙なエラーが表示されます。
私は周りを検索しましたが、問題の解決策を見つけることができませんでした。誰にもアイデアはありますか?前もって感謝します。
java - OS ワークフローの置き換え
Open-Symphony ワークフローを使用する Java アプリケーションがあり、OS WF が最終段階に達したため、このアプリケーションを再設計し、OS ワークフローを新しいオープンソース ワークフロー エンジンに置き換えようとしています。この OS ワークフローに代わる最良の方法は何ですか?
ワークフローは、現在のステップを容易にし、履歴ステップ、アクション、各ステップの前後の条件を保持する必要があります。
JBPM と Activiti のワークフローを調べましたが、これらのワークフローはより多くの機能を備えているため、私のアプリケーションにとってはかなり重いように見えました。
どんな考えでも大歓迎です。