1

ソーラー ホット インデックス作成でウィザードのようなものを使用したいのですが、カスタム ボタンでウィザードが開かず、カスタム ボタンが削除ボタンの横のアイテム リスト ビューに表示されます。このために、次のコードを試してみてください。ここで間違っている

  1. アクションフォルダーに定義.xmlを作成し、アクションクラスを作成し、config.xmlで同じように構成します
  2. ウィジェット フォルダーに 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;
    }
}
4

0 に答える 0