-
1. Re: Query on ajax4jsf
sabrashevich Nov 5, 2007 8:23 AM (in response to neokar)Could you post here your application code snippet?
-
2. Re: Query on ajax4jsf
neokar Nov 6, 2007 1:13 AM (in response to neokar)xhtml
______
<ips:dynamicControl id="karthik_id" groupName="#{dynAjaxCtrlBean.compMD.groupName}"
metaData="#{dynAjaxCtrlBean.compMD}" dataObject="#{dynAjaxCtrlBean.testDO}" />
dynAjaxCtrlBean Bean
____________________
package com.manh.ils.ui.test.dynamiccontrol;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.manh.ils.base.dynamic.DynamicControlMetaData;
import com.manh.ils.base.dynamic.DynamicGroupComponentMetaData;
import com.manh.ils.base.finitevalue.dynamic.PSControlType;
public class DynamicAjaxCtrlsTestBean {
private DynAjaxCtrlsTestDataObject _testDO = null;
private DynamicGroupComponentMetaData _compMD = null;
public DynamicAjaxCtrlsTestBean() {
buildDfltDO();
buildDfltMD();
}
public DynAjaxCtrlsTestDataObject getTestDO() {
if (_testDO == null) {
buildDfltDO();
}
return _testDO;
}
public void setTestDO(DynAjaxCtrlsTestDataObject dataObj) {
_testDO = dataObj;
}
public DynamicGroupComponentMetaData getCompMD() {
if (_compMD == null) {
buildDfltMD();
}
return _compMD;
}
public void setCompMD(DynamicGroupComponentMetaData md) {
_compMD = md;
}
private void buildDfltDO() {
_testDO = new DynAjaxCtrlsTestDataObject();
_testDO.setMyAjaxTextBox("AjaxTextBoxValue");
_testDO.setMyAjaxDropDown("AjaxDropDownValue");
_testDO.setMyAjaxInputMask("11.11");
}
private void buildDfltMD()
{
_compMD = new DynamicGroupComponentMetaData();
_compMD.setGroupName("Group 1");
_compMD.setId("testAjaxcomp1");
_compMD.setLocnMap(null);
List dynControls = new ArrayList();
//First one, required and disabled
DynamicControlMetaData dc1 = createMetaData("Field One", "myAjaxTextBox", "AAAAA", "True", "F", PSControlType.AJAX_TEXTBOX,"onmouseover","#{ajaxInputBean.ajaxEventAction1}",null,"destBox",null);
DynamicControlMetaData dc2_dropDown = createMetaData("Field Two", "myAjaxDropDown", "AAAAA", "True", "F", PSControlType.AJAX_DROPDOWN,"onmouseover","#{ajaxInputBean.ajaxEventAction1}",null,"destBox",null);
DynamicControlMetaData dc3_inputMask = createMetaData("Field Three", "myAjaxInputMask", "NN.NN", "True", "F", PSControlType.AJAX_INPUTMASK,"onmouseover","#{ajaxInputBean.ajaxEventAction1}",null,"destBox",null);
dynControls.add(dc1);
dynControls.add(dc2_dropDown);
dynControls.add(dc3_inputMask);
_compMD.setDynamicControls(dynControls);
}
private DynamicControlMetaData createMetaData(String label, String ctrlId,
String mask, String required, String disabled,
PSControlType ctrlType,String event,String action,String onComplete,String reRender,List ajaxSupportItem) {
DynamicControlMetaData dynCtrlMD = new DynamicControlMetaData();
//Defaults
// Map valMap = new LinkedHashMap();
// valMap.put("val0", "val0");
// dynCtrlMD.setControlValueMap(valMap);
//
// Object[] defaultArr = { "dflt0" };
// dynCtrlMD.setDefaultValue(defaultArr);
//Arguments
dynCtrlMD.setControlType(ctrlType);
dynCtrlMD.setControlLabel(label);
dynCtrlMD.setControlId(ctrlId);
dynCtrlMD.setMaxLength(mask.length());
dynCtrlMD.setMask(mask);
dynCtrlMD.setRequired(required);
dynCtrlMD.setDisabled(disabled);
dynCtrlMD.setEvent(event);
dynCtrlMD.setAction(action);
dynCtrlMD.setOnComplete(onComplete);
dynCtrlMD.setReRender(reRender);
dynCtrlMD.setAjaxSupportItem(ajaxSupportItem);
return dynCtrlMD;
}
}
Renderer
_______
private void createAjaxTextBoxComponent(FacesContext context, UIPanel dynamicControlPanel,
Object entity, DynamicControlMetaData contrlMeta, UIDynamicControl dynCtrl)
{
if(willLogDebug)
{
IPSLogger.logDebug(CLASS_NAME + "createAjaxTextBoxComponent-start");
}
UIComponent inputComp;
UIComponent outPutTextComp;
outPutTextComp = getLocalInstance().createOutputText(
contrlMeta.getControlLabel(), context);
dynamicControlPanel.getChildren().add(outPutTextComp);
//R205 / CR 1414 - if component is tagged as required, add the necessary HTML
if(contrlMeta.getRequired().equalsIgnoreCase(TRUE))
{
dynamicControlPanel.getChildren().add(new HtmlBlock(REQD_BLOCK_STRING));
}
//TODO This will need to change to support left-oriented labels.
addHtmlBreak(dynamicControlPanel);
// dynamicControlPanel.getChildren().add(addHtmlSpaces(2));
String value = "";
if(null != entity)
{
Class entityClass = entity.getClass();
value = getControlValuesFromModel(entity, entityClass, contrlMeta);
}
if(willLogDebug)
{
IPSLogger.logDebug(CLASS_NAME + "createAjaxTextBoxComponent-value" + value);
}
//R205 / CR 1414 -- support disabling individual fields. Disable if set to "true"
// at field level or at entire component level.
boolean disableComp = _disabled || contrlMeta.getDisabled().equalsIgnoreCase(TRUE);
// inputComp = getLocalInstance().createAjaxInputTextLimitSize(value,
// contrlMeta.getControlId()+dynamicId, context, disableComp,contrlMeta.getEvent(),contrlMeta.getAction(),contrlMeta.getOnComplete(),contrlMeta.getReRender(),contrlMeta.getAjaxSupportItem());
inputComp = getLocalInstance().createAjaxInputTextLimitSize(value,
dynamicId, context, disableComp,contrlMeta.getEvent(),contrlMeta.getAction(),contrlMeta.getOnComplete(),contrlMeta.getReRender(),contrlMeta.getAjaxSupportItem());
//R205 / CR 1414
applyJSEvents(dynCtrl, inputComp);
dynamicControlPanel.getChildren().add(inputComp);
dynamicControlPanel.getChildren().add(addHtmlSpaces(3)); //TODO Make this configurable
if(willLogDebug)
{
IPSLogger.logDebug(CLASS_NAME + "createAjaxTextBoxComponent-end");
}
}
Helper creating component
________________________
public UIComponent createAjaxInputTextLimitSize(String value, String id,
FacesContext context, boolean isDisabled, String event,
String action, String onComplete, String reRender,
List ajaxSupportItem)
{
UIAjaxInputText input = (UIAjaxInputText) context.getApplication().createComponent("ips.component.AjaxInputText");
input.setId(id);
ValueBinding vb = context.getApplication().createValueBinding("#{ajaxInputBean.textValue}");
input.setValueBinding("value",vb);
input.setEvent(event);
input.setAction(action);
input.setOnComplete(onComplete);
input.setReRender(reRender);
input.setAjaxSupportItem(ajaxSupportItem);
if(isDisabled)
{
input.setOnfocus("this.blur();");
input
.setStyle("border-style: solid; border-color:darkgray; color:darkgray; padding: .1em; margin: .1em; border-width: 1px; text-align: left;");
}
return input;
}
the ajax text box works fine when used in xhtml directly...when renderere dynamically i get a4j not defined..the xhtml whre i place dynamic control has a a4j namespace defined..if you can send me ur mail id i wil send attachments..Thanks.. -
3. Re: Query on ajax4jsf
sabrashevich Nov 6, 2007 5:22 AM (in response to neokar)Can you create an issue in our jira with exact steps to reproduce and attach your application in .war file?
http://jira.jboss.com/jira/browse/RF -
4. Re: Query on ajax4jsf
neokar Nov 6, 2007 6:01 AM (in response to neokar)issue posted...
URL is http://jira.jboss.com/jira/browse/AJSF-125