Xpages XspDateTimeHelper和XspInputText
我试图基于Keith Strickland的示例为XPages构建一个JSF库控件 我正在尝试创建一个函数,该函数创建一个带有附加日期选择器控件的InputBox控件 以下是我尝试过的代码:Xpages XspDateTimeHelper和XspInputText,xpages,Xpages,我试图基于Keith Strickland的示例为XPages构建一个JSF库控件 我正在尝试创建一个函数,该函数创建一个带有附加日期选择器控件的InputBox控件 以下是我尝试过的代码: XspInputText inputText = new XspInputText(); inputText.setId("inputText1"); DateTimeConverter converter = new DateTimeConverter(); conve
XspInputText inputText = new XspInputText();
inputText.setId("inputText1");
DateTimeConverter converter = new DateTimeConverter();
converter.setType("date");
inputText.setConverter(converter);
XspDateTimeHelper dateTimeHelper = new XspDateTimeHelper();
dateTimeHelper.setId("dateTimeHelper1");
inputText.getChildren().add(dateTimeHelper);
inputText.setRendered(true);
this.getChildren().add(inputText);
已呈现InputText控件,但未呈现转换器、验证程序和日期选择器按钮
嗨,基思的答案解决了问题,但现在我有了另一个答案。我尝试从exlib将inputtext添加到fromtable。如果没有formtable,则“DateTimePicker”将正确呈现,但使用formtable,它仅呈现为文本字段
以下是完整的代码:
public class Libcontrol extends UIComponentBase implements FacesComponent {
private static final String RENDERER_TYPE = "de.chris.Libcontrol ";
private static final String COMPONENT_FAMILY = "de.chris";
public void CommonContactInfo() {
setRendererType(RENDERER_TYPE);
}
@Override
public String getFamily() {
return COMPONENT_FAMILY;
}
@SuppressWarnings("unchecked")
public void initBeforeContents(FacesContext arg0) throws FacesException {
UIFormTable table = new UIFormTable();
table.setId("mytable");
table.setDisableRowError(false);
table.setDisableErrorSummary(true);
table.setLabelPosition("left");
UIFormLayoutRow row = new UIFormLayoutRow();
row.setId("myrow");
row.setLabel("DATEROW");
XspInputText inputText = new XspInputText();
inputText.setId("inputText1");
DateTimeConverter converter = new DateTimeConverter();
converter.setType("date");
inputText.setConverter(converter);
XspDateTimeHelper dateTimeHelper = new XspDateTimeHelper();
dateTimeHelper.setId("dateTimeHelper1");
inputText.getChildren().add(dateTimeHelper);
inputText.setRendered(true);
this.getChildren().add(inputText);
row.getChildren().add(inputText);
table.getChildren().add(row);
this.getChildren().add(table);
}
public void buildContents(FacesContext arg0, FacesComponentBuilder arg1) throws FacesException {
// Do Nothing
}
/**
* This method must be present because we're implementing FacesComponent
*/
public void initAfterContents(FacesContext arg0) throws FacesException {
// Do nothing
}
}
我不确定问题出在哪里,有什么想法吗?好的,我想我可能发现了你的问题。在XPage/Custom控件本身上,设置以下属性: dojoParseOnLoad=true 多约瑟姆=真 或者,如果不想在XPage/自定义控件中设置这些属性,可以在调用super.encodeBegin()之前的某个地方,在渲染器encodeBegin中设置这些属性:
你用什么方法来表达?同意托比的说法,“这”的上下文是什么?另外,我注意到您没有在转换器上设置dateStyle,有效值是default、short、Middle和long。我认为,如果没有定义,它应该返回到“默认”,但我不确定。添加dojoParseOnLoad=true dojoTheme=true后寻求帮助一切正常
//Here context = FacesContext or FacesContext.getCurrentInstance();
UIViewRootEx rootEx = (UIViewRootEx) context.getViewRoot();
rootEx.setDojoParseOnLoad(true);
rootEx.setDojoTheme(true);