有没有人意识到编辑器和jsr 303验证如何与GWT 2.3一起工作?验证API已添加到gwt sdk.但我无法使用编辑器框架验证实体.无论我做什么,都不会从客户端或服务器端抛出错误.
这是一段代码:
public class P {
public P() {}
@Size(min=4)
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
PEditor
public class PEditor extends Composite implements Editor<P> {
private static PEditorUiBinder uiBinder = GWT.create(PEditorUiBinder.class);
interface PEditorUiBinder extends UiBinder<Widget, PEditor> {}
@UiField
TextBox name;
public PEditor() {
initWidget(uiBinder.createAndBindUi(this));
}
}
Run Code Online (Sandbox Code Playgroud)
PEditor pEditor;
interface Driver extends SimpleBeanEditorDriver<P, PEditor> {}
Driver driver = GWT.<Driver> create(Driver.class);
public void onModuleLoad() { …Run Code Online (Sandbox Code Playgroud) 我有一个JSF转换器,我用于包含几种不同实体类型的SelectItem列表.在getAsString()方法中,我创建字符串作为后缀为":"的类名和ID.
MySuperClass superClass = (MySuperClass)value;
if(superClass != null) {
return String.valueOf(superClass.getClass().getName()+":"+superClass.getId());
}
Run Code Online (Sandbox Code Playgroud)
这允许我getAsObject()通过这样做在从UI返回的路上加载正确的实体:
String className = value.substring(0, value.indexOf(":"));
long id = Long.parseLong(value.substring(value.indexOf(":")+1));
Class<T> entitySuperClass = (Class<T>) Class.forName(className);
MySuperClass superClass = (MySuperClass)getEntityManager().find(entitySuperClass, id);
Run Code Online (Sandbox Code Playgroud)
我的问题是我的实体getAsString()是代理.因此,com.company.MyEntity当我执行getClass().getName()时,我得到的com.company.MyEntity_$$_javassist_48却是失败的find().
有没有办法(除了字符串操作)获取具体的类名(例如com.company.MyEntity)?
谢谢.
我有一个JSF验证器,用于检查Container Number字符串是否符合ISO-6346规范.
它工作正常,但我需要根据容器号来自的Bean中的其他值添加一些条件处理.这个Bean可以有几种不同的类型.
有没有办法在验证器中访问Bean并对其执行操作?理想情况下,我喜欢将它作为验证器,但如果没有解决方案,我必须在持久化之前在Bean中实现逻辑.
我正在考虑以下几点:
public class ContainerNumberValidator implements javax.faces.validator.Validator {
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
Object bean = UIComponent.getMyBeanSomehowThroughAMagicMethod();
if(bean instanceof BeanA) {
//do this
} else if(bean instanceof BeanB) {
//do that
}
}
Run Code Online (Sandbox Code Playgroud)
更新:在许多方面,这是同时验证多个字段的类似问题.BalusC的这段代码很有帮助.
非常感激.
D.
有谁知道编写通用JMS客户端是否可行- 即.与不同提供商的JMS合作的一个(例如Sonic,IBM SIB,Jboss等)?
每次我编写JMS客户端代码时,它总是非常特定于实现,具有依赖的JAR和Context类.
谢谢.
使用exec组件时,是否可以指定args内联而不必将其设置为ExecBinding.EXEC_COMMAND_ARGS?
例如,我有这条路线:
from("seda:getPolicyListStart")
.process(new Processor() {
public void process(Exchange e) {
ClientRequestBean requestBean = (ClientRequestBean)e.getIn().getBody();
List<String> args = new ArrayList<String>();
args.add(requestBean.getClient());
args.add(requestBean.getSort());
e.getOut().setHeader(ExecBinding.EXEC_COMMAND_ARGS, args);
}
})
.to("exec:some_command?useStderrOnEmptyStdout=true")
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
Run Code Online (Sandbox Code Playgroud)
但是我会认为我可以使用简单表达式语言来简化它:
from("seda:getPolicyListStart")
.to("exec:some_command?useStderrOnEmptyStdout=true&args=${body.client} ${body.sort}")
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
Run Code Online (Sandbox Code Playgroud)
与使用文件组件时如何使用文件语言(简单的子集)类似.
可能吗?如果没有,第一个例子可以简化吗?
更新 [解决方案]:
from(requestNode)
.routeId(routeId)
.recipientList(simple("exec:"+osCmd+"?useStderrOnEmptyStdout=true&args=${body.client}"))
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
.to(responseNode);
Run Code Online (Sandbox Code Playgroud)
谢谢.
是否可以使用Groovy的XMLSlurper并在索引处插入子节点?
目前,GPathResult类具有putAt(index)和appendNode().第一个替换索引处的元素而不是插入,第二个添加到结尾.
不幸的是,我与XmlSlurper而不是XmlParser联系在一起.
谢谢.