Jsf 如何从ICEfaces模式弹出窗口调用托管bean?
我正在使用EclipseLunaEE、TomcatV7.0和IceFaces3.2 我有一个标签打印表单,用户可以输入项目编号、项目名称和标签类型等信息。然后用户提交表单。这将以ZPL字符串的形式将信息发送到标签打印机,然后打印机打印出项目的正确标签。这一切都没问题 如果数值较高(生产中超过100),则表单将对照打印数量进行检查。如果打印量超过某个值(>2。纯粹出于测试目的),则“testFlag”布尔值设置为true,显示模式框,并设置错误标志,以便不执行打印命令 模式框会询问用户输入的数量是否正确,并显示“是/否”按钮 printUI和模式弹出窗口位于同一Jsf 如何从ICEfaces模式弹出窗口调用托管bean?,jsf,action,icefaces,popuppanel,Jsf,Action,Icefaces,Popuppanel,我正在使用EclipseLunaEE、TomcatV7.0和IceFaces3.2 我有一个标签打印表单,用户可以输入项目编号、项目名称和标签类型等信息。然后用户提交表单。这将以ZPL字符串的形式将信息发送到标签打印机,然后打印机打印出项目的正确标签。这一切都没问题 如果数值较高(生产中超过100),则表单将对照打印数量进行检查。如果打印量超过某个值(>2。纯粹出于测试目的),则“testFlag”布尔值设置为true,显示模式框,并设置错误标志,以便不执行打印命令 模式框会询问用户输入的数量是
元素内,如果testFlag设置为true,则弹出框呈现并可见
问题:
当我单击模式框中的“是”按钮时,它不会执行我分配给它的操作(System.out.println(“是按钮”)
)。模态框关闭,什么也没有发生
然后我可以重新提交表单,模式框再次出现,然后我单击“是”,什么也没有发生
如果我将数量更改为2并提交,那么它执行打印命令没有问题
我猜这是会话处理方式的问题
问题:
如何获得模式框上的“是”按钮以执行我想要的代码
我试过了:
使用
,
,
,
将模式弹出窗口和表单分别放在
标记中(这会刷新会话并删除所有输入的数据)
使用actionListener
包含表单的代码:
<h:body>
<div id="surround">
<ice:form id="test" prependId="false">
<ui:include src="./printUI.xhtml" />
<ui:include src="./printQtyPopup.xhtml" />
</ice:form>
</div>
</h:body>
<h:inputText id="printQty" value="#{validateBean.printAmount}" size="8" autocomplete="off"
maxlength="3" required="true" onblur="submit()"
valueChangeListener="#{validateBean.printQtyChange}" />
public void printQtyChange(ValueChangeEvent e) {
printAmount = e.getNewValue().toString();
try {
ls.setPrintQty(Integer.parseInt(printAmount));
} catch (NumberFormatException eve) {
errorMessage = true;
quantityInvalid = true;
errorFlag = true;
}
printQty = ls.getPrintQty();
System.out.println("Qty : " +printQty);
if (printQty < 1) {
errorMessage = true;
quantityInvalid = true;
errorFlag = true;
}
}
<ice:inputText id="printQty" value="#{validateBean.printAmount}" size="8" autocomplete="off"
maxlength="3" required="true" valueChangeListener="#{validateBean.printQtyChange}"
partialSubmit="true" />
我找到了另一个选择 我已经删除了模式弹出窗口和任何与之链接的代码 我在表格末尾添加了一个
。仅当打印数量高于我设置的任何数字时,才会呈现此效果
我通过在我的打印量
上使用onblur=“submit()”
我尝试了onchange=“submit()”
,但在提交一系列打印作业时遇到了问题。我必须按“回车”键才能强制激活onchange
属性,这是用户不想要的
的工作原理是暂停表单的提交并等待响应,然后继续或停止提交。它完成了我试图通过模态弹出实现的目标
打印数量输入文本:
<h:body>
<div id="surround">
<ice:form id="test" prependId="false">
<ui:include src="./printUI.xhtml" />
<ui:include src="./printQtyPopup.xhtml" />
</ice:form>
</div>
</h:body>
<h:inputText id="printQty" value="#{validateBean.printAmount}" size="8" autocomplete="off"
maxlength="3" required="true" onblur="submit()"
valueChangeListener="#{validateBean.printQtyChange}" />
public void printQtyChange(ValueChangeEvent e) {
printAmount = e.getNewValue().toString();
try {
ls.setPrintQty(Integer.parseInt(printAmount));
} catch (NumberFormatException eve) {
errorMessage = true;
quantityInvalid = true;
errorFlag = true;
}
printQty = ls.getPrintQty();
System.out.println("Qty : " +printQty);
if (printQty < 1) {
errorMessage = true;
quantityInvalid = true;
errorFlag = true;
}
}
<ice:inputText id="printQty" value="#{validateBean.printAmount}" size="8" autocomplete="off"
maxlength="3" required="true" valueChangeListener="#{validateBean.printQtyChange}"
partialSubmit="true" />
这消除了在提交一系列作业时有时仍然存在问题的问题
我没有将
partialsubmit=“true”
放在
上,因为我必须将每个其他输入字段声明为partialsubmit=“false”
,以防止执行不必要的代码。只在我要检查的输入字段中使用它会更整洁。我找到了另一种选择
我已经删除了模式弹出窗口和任何与之链接的代码
我在表格末尾添加了一个
。仅当打印数量高于我设置的任何数字时,才会呈现此效果
我通过在我的打印量
上使用onblur=“submit()”
我尝试了onchange=“submit()”
,但在提交一系列打印作业时遇到了问题。我必须按“回车”键才能强制激活onchange
属性,这是用户不想要的
的工作原理是暂停表单的提交并等待响应,然后继续或停止提交。它完成了我试图通过模态弹出实现的目标
打印数量输入文本:
<h:body>
<div id="surround">
<ice:form id="test" prependId="false">
<ui:include src="./printUI.xhtml" />
<ui:include src="./printQtyPopup.xhtml" />
</ice:form>
</div>
</h:body>
<h:inputText id="printQty" value="#{validateBean.printAmount}" size="8" autocomplete="off"
maxlength="3" required="true" onblur="submit()"
valueChangeListener="#{validateBean.printQtyChange}" />
public void printQtyChange(ValueChangeEvent e) {
printAmount = e.getNewValue().toString();
try {
ls.setPrintQty(Integer.parseInt(printAmount));
} catch (NumberFormatException eve) {
errorMessage = true;
quantityInvalid = true;
errorFlag = true;
}
printQty = ls.getPrintQty();
System.out.println("Qty : " +printQty);
if (printQty < 1) {
errorMessage = true;
quantityInvalid = true;
errorFlag = true;
}
}
<ice:inputText id="printQty" value="#{validateBean.printAmount}" size="8" autocomplete="off"
maxlength="3" required="true" valueChangeListener="#{validateBean.printQtyChange}"
partialSubmit="true" />
这消除了在提交一系列作业时有时仍然存在问题的问题
我没有将
partialsubmit=“true”
放在
上,因为我必须将每个其他输入字段声明为partialsubmit=“false”
,以防止执行不必要的代码。只在我要检查的输入字段中使用它会更整洁。我想我已经想出了一个解决方案。现在正在进行测试。我已经删除了模式弹出窗口,并在数量输入字段中引入了“valueChangeListener”。然后,我添加了一个面板确认,如果数量高于设定值,则会呈现该面板确认。我想我已经找到了一个修复方法。现在正在进行测试。我已经删除了模式弹出窗口,并在数量输入字段中引入了“valueChangeListener”。然后,我添加了一个面板确认,如果数量高于设定值,则会呈现该面板确认。