問題タブ [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.

0 投票する
2 に答える
1298 参照

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 があったのですが、なぜ見つからなかったのでしょうか?

0 投票する
1 に答える
94 参照

symphony-cms - Symphony CMS ファイル アップロードの致命的なエラー

ファイル、特に画像をアップロードできるセクションを作成しようとしています。問題なくセクションを作成できます。問題は、新しいエントリを作成してファイルを選択するときです。エントリを保存するために [保存] をクリックすると、非常に奇妙なエラーが表示されます。

私は周りを検索しましたが、問題の解決策を見つけることができませんでした。誰にもアイデアはありますか?前もって感謝します。

0 投票する
1 に答える
807 参照

java - OS ワークフローの置き換え

Open-Symphony ワークフローを使用する Java アプリケーションがあり、OS WF が最終段階に達したため、このアプリケーションを再設計し、OS ワークフローを新しいオープンソース ワークフロー エンジンに置き換えようとしています。この OS ワークフローに代わる最良の方法は何ですか?

ワークフローは、現在のステップを容易にし、履歴ステップ、アクション、各ステップの前後の条件を保持する必要があります。

JBPM と Activiti のワークフローを調べましたが、これらのワークフローはより多くの機能を備えているため、私のアプリケーションにとってはかなり重いように見えました。

どんな考えでも大歓迎です。