ATG - 如何开始创建Hello World组件和模块示例?

时间:2014-01-06 04:58:14

标签: atg

我是ATG的新手,我只能用JBoss成功安装ATG v10.2。
但是,由于在ATG中创建组件和模块可以用不同的方式完成,所以我想知道模块和组件是否有任何“Hello World”示例。

我已经在谷歌搜索过了,但互联网上的不同文章并没有按顺序提及细节。 因此,如果人们可以详细说明新手的步骤,那将会很棒,因为我至少需要开始使用一个示例,我可以将其作为其他复杂示例的基础。

非常感谢每一个人!

注意: -
我也在某种程度上了解J2EE和MVC,我可以在这里提交表单并将用户输入数据保存到DB,没有任何重大问题。
我现在也正在阅读ATG Page Developer Guide。

4 个答案:

答案 0 :(得分:6)

ATG中有很多概念,这使得Hello World程序难以实现。您的意思是创建一个JSP页面并像商业参考商店一样部署它吗?你想在Dyn / Admin中创建一个组件吗?你想创建一个hello world存储库吗?根据您的想法,采取的方法将有所不同。

要使用ATG,您无需了解如何在数据库中保存值。如果您使用J2EE& amp; MVC的经验,除非你从一个新的头脑开始,否则你可能会发现很难应对它,因为ATG的情况非常不同。

由于@radimpe介绍了创建一个hello world droplet,我将展示如何创建一个简单的组件,以便可以在Dyn / Admin中查看它。

创建一个HelloWorld组件:它只出现在DynAdmin 中 创建具有以下结构的Eclipse项目。

Elipse project structure

以下是上述截图中显示的每个文件的内容

HelloWorldComponent.java

package com.buddha.components;

import atg.nucleus.GenericService;
import atg.nucleus.ServiceException;

public class HelloWorldComponent extends GenericService {

    public String firstStr = "Dummy Value"; /* This value will be overwritten */

    public String getFirstStr() {
        return firstStr;
    }

    public void setFirstStr(String firstStr) {
        this.firstStr = firstStr;
    }

    @Override
    public void doStartService() throws ServiceException {
        super.doStartService();
        System.out.println("Hello ATG Component!");
    }

    @Override
    public void doStopService() throws ServiceException {
        super.doStopService();
        System.out.println("Hello ATG Component! Stops now!");
    }
}

的Manifest.MF

Manifest-Version: 1.0
ATG-Required: DafEar.Admin 
ATG-Config-Path: config/
ATG-Class-Path: ./bin/ 

HelloWorldComponent.properties

$class=com.buddha.components.HelloWorldComponent
firstStr=HelloWorld

构建项目并将项目文件夹复制到$ {DYNAMO_ROOT}并运行以下命令以生成项目的ear文件并将其部署到jboss服务器中。

runAssembler.bat -jboss HelloWorld.ear -m EXP_HelloATGComponentWorld

导航至Dyn / Admin并搜索组件HelloWorldComponent,然后单击搜索结果中列出的组件。

SearchResults of the component we have just created

单击它以转到组件页面以查看我们创建的属性及其在属性文件中给出的值。 Component Property we have created

你可以像这样观察日志 21:53:00,485 INFO [stdout] (http-/0.0.0.0:8080-1:ipaddr=127.0.0.1;path=/dyn/admin/nucleus//com/buddha/components/HelloWorldComponent;sessionid=gT4bmHj5WKs1Rf85GN0Z+9Qu) Hello ATG Component!由于doStartService()中的sysout而生成此行; 您还可以提供其他可以通过dyn / admin调用或与其他组件交互的方法。最好的运气。

来源:Creating a component in Oracle Commerce Platform

答案 1 :(得分:5)

这是一个相当广泛的主题,一般来说,Hello World示例只会让您开始在屏幕上呈现一些文字。大多数前端互动都会在FormHandlersDroplets进行,其中Droplet会在屏幕上显示Hello World文字。那么让我们开始吧。

<%-- JSTL --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<%-- DSP --%>
<%-- This tag library represents the ATG tags --%>
<%@ taglib prefix="dsp" uri="http://www.atg.com/taglibs/daf/dspjspTaglib1_0" %>

<%-- All, non-static includes will have a wrapping page tag --%>
<dsp:page>
  <%-- A droplet is almost like a servlet, and here you include the name of the droplet you want to call --%>
    <dsp:droplet name="/com/acme/droplet/HelloWorldDroplet">
    <%-- An 'output parameter' matches the name of the 'service parameter' in your droplet. You can have multiple of these --%>
     <dsp:oparam name="output">
       <%-- The 'param' matches the name of the 'setParameter' in your droplet and can also be assigned to a jstl variable below --%>
       Hello <dsp:valueof param="toWhom" />
     </dsp:oparam>
  </dsp:droplet>
</dsp:page>

现在创建一个'组件'。这是将在JSP页面和CLASS文件之间映射的属性文件(即,您在Droplet名称中引用它)

文件:/com/acme/droplet/HelloWorldDroplet.properties

$class=com.acme.droplet.HelloWorldDroplet
$scope=global

现在创建你的Java文件:(/ com / acme / droplet / HelloWorldDroplet.java)

public class HelloWorldDroplet extends DynamoServlet {

    public void service(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws ServletException, IOException {
            //This will allow you to pass a parameter to the droplet eg: hello.jsp?who=Peter
        String who = pRequest.getParameter("who");

        //Do a check on whether to display the default value or the one passed in
        if (StringUtils.isEmpty(who)) {
            //'toWhom' is the name of the param on the JSP page
            pRequest.setParameter("toWhom", "World");
        } else {
            pRequest.setParameter("toWhom", who);
        }
        //'output' is the name of the 'oparam' on the JSP page.
        pRequest.serviceParameter("output", pRequest, pResponse);
        }
}

希望这足以让你开始。

答案 2 :(得分:1)

你也可以看看下面的页面..它很好地解释了什么Actualy是一个组件的概念,我们如何使用它.. http://learnoracleatg.blogspot.in/2014/10/art108-extending-out-of-box-components.html

您也可以通过按导航栏上的“基础知识”按钮从基础开始......它很好地解释了这些概念。

答案 3 :(得分:1)

使用eclipse检查http://www.asknsay.com/creating-new-atg-project-in-eclipse.html是否从头创建新的应用程序。它还介绍了如何在JBOSS 6.1中部署它。