> 
> A few conditions make this not a trivial task, it seems: We cannot use @Block 
> and @RenderBlock, because the components for versions of other customers 
> shall 
> not be contained in the deployment (at worst they could contain corporate 
> secrets).
> 


Why not @Block/@RenderBlock? In fact, these seem ideal for your
situation.  So, you're grabbing the right component instance based on
the current customer, right? And some of these customer-specific
components have sensitive information, and so they shouldn't be
distributed to all customers, right? No sweat. :)
Define -
        A page per customer
Define -
        The customer specific components in blocks within the customer specific
page

Distribute -
        The application pages + the Customer's component page.

Now, when you need to grab that component, you do something like the
following:

.html:
<div jwcid="@RenderBlock" block="ognl:customerBlock"/>

<div jwcid="[EMAIL PROTECTED]">...</div>

.java:

public IComponent getCustomerBlock() {
    /*I'm assuming you're using tap  4 and the customer object is injected*/
    Customer c = getCustomer();
    IPage p = getRequestCycle().getPage(c.getCustomerPageName());
    IComponent block = p.getComponent("BlockName or lookup here");
    if (block == null) {
        return getPage().getComponent("DefaultBlock");
    }
}


Something like that.  The point is, RenderBlock doesn't care where the
Block is coming from; it doesn't /have/ to be on the same page. This
allows you to isolate customer-specific blocks on a page for that
customer, and then only distribute the appropriate customer-specific
page.  So... I ask again: why not Block/RenderBlock? :)

Robert

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to