OrderDetailPortlet.java
OrderDetailPortlet.java
...
private static final String PREFIX = ""; //$NON-NLS-1$
public static final String ACTION_NAME = PREFIX + "actionName"; //$NON-NLS-1$
public static final String ORDER_DETAILS = PREFIX + "orderDetails"; //$NON-NLS-1$
public static final String ORDER_ID_ENTRY = PREFIX + "orderIdEntry"; //$NON-NLS-1$
public static final String ORDER_ID = PREFIX + "orderId"; //$NON-NLS-1$
public static final String ORDER_DETAIL_BEAN = PREFIX + "orderDetailBean"; //$NON-NLS-1$
public static final String ORDER_DETAIL = PREFIX + "orderDetail"; //$NON-NLS-1$
public static final String TRACKING_ID = PREFIX + "trackingId"; //$NON-NLS-1$
...
public void actionPerformed(ActionEvent event) {
String actionName = event.getActionString(); PortletRequest request = event.getRequest(); //An action causes the state to be modified
ShippingUtils.setLastModified(request); if (getPortletLog().isDebugEnabled()) {
getPortletLog().debug(Messages.getString("OrderDetailPortlet_action_entry")); //$NON-NLS-1$
} if (actionName.equals(ORDER_DETAILS)) {
request.getPortletSession().setAttribute(
ACTION_NAME,
ORDER_DETAILS);
request.getPortletSession().setAttribute(
ORDER_ID,
request.getParameter(ORDER_ID)); /*
* We do this as tracking id is an out param in the C2A WSDL file
* We write the tracking id in the request so it can be published by
* the broker in the same event cycle
*/
OrderDetail od = ShippingDB.getOrderDetail(request.getParameter(ORDER_ID));
request.getPortletSession().setAttribute(ORDER_DETAIL, od);
request.setAttribute(TRACKING_ID, od.getTrackingId());
} else if (actionName.equals(ORDER_ID_ENTRY)) {
request.getPortletSession().setAttribute(
ACTION_NAME, ORDER_ID_ENTRY);
}
}
...
OrderDetail.wsdl(属性代理接收来自请求属性的跟踪标识参数。)
...
<binding
name="OrderDetailBinding"
type="tns:OrderDetail_Service">
<portlet:binding></portlet:binding>
<operation name="order_Detail">
<portlet:action name="orderDetails" type="simple" caption="Order.Details" description="Get.details.for.specified.order.id"/>
<input>
<portlet:param name="orderId" partname="order_Id" caption="order.id"/>
</input>
<output>
<portlet:param name="trackingId" partname="tracking_Id" boundTo="request-attribute" caption="tracking.id"/>
</output>
</operation>
</binding>
...