ソーラー ホット インデックス作成でウィザードのようなものを使用したいのですが、カスタム ボタンでウィザードが開かず、カスタム ボタンが削除ボタンの横のアイテム リスト ビューに表示されます。このために、次のコードを試してみてください。ここで間違っている
- アクションフォルダーに定義.xmlを作成し、アクションクラスを作成し、config.xmlで同じように構成します
- ウィジェット フォルダーに definition.xml を作成し、widget.xml にコントローラー クラスとウィジェット接続を作成しました。
widgetdefinationid は何ですか? コンソール WARN [hybrisHTTP30] [DefaultActionRenderer] 不正な構成で警告が表示されます! アクション クラス 'de.hybris.platform.actions.MyAction' には、入力として 'de.hybris...path.myModel' が必要ですが、'java.lang.String' のコンテキストで使用されるように構成されています
定義.xml
<action-definition id="path.actions.MyAction" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.hybris.com/schema/cockpitng/action-definition.xsd">
<name>MyAction</name>
<description>MyAction</description>
<author>Me</author>
<version>0.1</version>
<actionClassName>path.actions.MyAction</actionClassName>
<inputType>de.hybris.platform.services.model.myModel</inputType>
<outputType>java.lang.Object</outputType>
<iconUri>icons/icon_action_search_prices_default.png</iconUri>
<sockets>
<output id="typeCode" type="java.lang.String" />
</sockets>
</action-definition>
MyAction クラス
public class MyAction extends AbstractComponentWidgetAdapterAware
implements CockpitAction<myModel, myModel>
{
private static final String SOCKET_OUT_CURRENT_PRINCIPAL = "typeCode";
@Override
public ActionResult<myModel> perform(final ActionContext<myModel> ctx)
{
ActionResult<myModel> result = new ActionResult<>(ActionResult.ERROR);
if (ctx.getData() != null)
{
sendOutput(SOCKET_OUT_CURRENT_PRINCIPAL, ctx.getCode());
result = new ActionResult<>(ActionResult.SUCCESS);
}
return result;
}
}
config.xml
<context type="testtype" component="listviewactions" merge-by="type">
<y:actions xmlns:y="http://www.hybris.com/cockpit/config/hybris">
<y:group qualifier="common">
<y:action action-id="path.actions.MyAction" property="pageable.typeCode"/>
</y:group>
</y:actions>
</context>
ウィジェットフォルダー内のdefinition.xml
<widget-definition id="abc.searchWidget" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.hybris.com/schema/cockpitng/widget-definition.xsd">
<name>Search POC</name>
<description>A widget to</description>
<defaultTitle></defaultTitle>
<author>me</author>
<version>0.1</version>
<view src="searchPoc.zul"/>
<keywords>
<keyword>SearchPocWidget</keyword>
</keywords>
<controller class="de.hybris.platform.controller.MySearchController"/>
<sockets>
<input id="inputObjectInput" type="java.lang.Object" />
<output id="refreshUI" type="java.lang.Object" />
</sockets>
</widget-definition>
widgets.xml
<widget-extension widgetId="hmc2list" >
<widget id="my-search-widget" widgetDefinitionId="com.hybris.cockpitng.backoffice.referenceadvancedsearchgroup"
slotId="cockpitWidgetChildrenInvisible" template="true" title="my serach button">
<widget id="mysearchwidget"
widgetDefinitionId="abc.searchWidget"
slotId="children" template="false" title=" widget"
>
</widget>
</widget>
<setting key="_width" type="String">70%</setting>
<setting key="_height" type="String">75%</setting>
</widget-extension>
<widget-connection sourceWidgetId="path.actions.MyAction" outputId="typeCode" targetWidgetId="my-search-widget" inputId="activate" />
zulファイル
<widget xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.zkoss.org/2005/zul">
<style src="${wr}/default.css"/>
<div>
<hlayout>
hi
</hlayout>
</div>
</widget>
public class MySearchController extends DefaultWidgetController
{
private Textbox searchInput;
@ViewEvent(componentID = "searchBtn", eventName = Events.ON_CLICK)
public void doSearch() throws InterruptedException
{
final List<String> result = search(searchInput.getText());
Messagebox.show(result.get(0));
}
public List<String> search(final String text)
{
final List<String> result = new ArrayList<String>();
result.add(text);
result.add("Hello");
result.add("Cockpit NG");
return result;
}
}