我无法弄清楚EJB会话bean无法正常工作的原因。实际的错误消息是EJBException:NameNotFoundException,但这不是一个非常有启发性的消息。
我已将其追溯到究竟是哪一行导致问题,但尚未找出原因。所以,我想创建一个会话bean来跟踪表单中的输入值。
代码的精简版本是:
public class rrpInputField {
public boolean isRequired;
public int maxLength;
public String inputValue;
public String displayValue;
public String formatMask;
public rrpInputField() {
isRequired = false;
maxLength = 64;
inputValue = "";
displayValue = "";
formatMask = "";
}
}
然后我创建了一个界面dohicky ......
@Local
public interface Test1 {
public void setAction(String action);
public String getAction();
public void setName(String name);
public String getName();
}
然后我自己创建了测试bean ......
@Stateful
public class Test1Bean implements Test1 {
private String action;
private rrpInputField name;
@PostConstruct
public void initialize() {
action = "initalValue";
//name.currentValue = "TestValue";
@Override
public void setAction(String action){ this.action = action; }
@Override
public void getAction() { return this.action; }
@Override
public void setName(String name) { this.name.currentValue = name; }
@Override
public String getName() { return this.name.currentValue; }
}
在我的测试servlet中我有
@EJB
private Test1 t1;
如果我取消注释bean定义中bean初始化方法中的一行,我就会失败。所以我知道它与此有关。 //name.currentValue =“TestValue”;
如果我把它注释掉,只要在servlet中编码t1.getName(“New Value”),我就会得到同样的错误。
如果我把它评论出去,那么bean会按预期工作 - 我可以初始化,并且使用setAction和getAction就好了。
我很确定rrpInput类是正确的,因为我可以在servlet中编码:
rrpInputField f1 = new rrpInputField();
f1.currentValue = "TestValue";
我认为它必须与我的输入字段类有关,但我没有运气搞清楚是什么。
答案 0 :(得分:0)
我真的不明白为什么,但我通过添加一个" new"来实现它。 thingie是Table1Bean的initialize方法。
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("How tall do you want your pyramid to be?\n");
int height = GetInt();
if (height > 23 && height < 1)
{
printf("Please use a positive number no greater than 23:\n");
}
else (height > 0 && height <= 23)
{
printf("Thanks!\n");
}
}
如果有人能够解释我为什么必须这样做,那将会很有启发性。