我有一个带有各种复选框的面板网格.复选框与某个掩码相关联.按下该复选框后,复选框(已选中/未确认)的值以及特定于该复选框的掩码参数应传递给侦听器.
<p:selectBooleanCheckbox value="#{options.mustChangePasswordMask}">
<p:ajax listener="#{options.selectionChanged}" />
</p:selectBooleanCheckbox>
<p:selectBooleanCheckbox value="#{options.mustChangePasswordMask}">
<p:ajax listener="#{options.selectionChanged('MASK_1')}" />
</p:selectBooleanCheckbox>
Run Code Online (Sandbox Code Playgroud)
这两个代码片段只能完成我想要的工作的一半.我想在所有复选框中使用监听器,因此我不能在监听器中使用mustChangePasswordMask属性.是否可以将复选框值作为参数发送给侦听器或以侦听器可访问的其他方式?
添加或删除Foo类型I的对象时,需要进行相同的计算.如何检测Foo模型对象的添加/删除?例如:
from django.db import models
class Foo(models.Model):
...
def save(self):
#do some processing
def delete(self):
#do some processing
Run Code Online (Sandbox Code Playgroud)
我可以避免这两种方法中的代码重复吗?
使用信号你可以实现它
from django.db import models
from django.db.models.signals import post_save, post_delete
class Foo(models.Model):
...
...
def foo_handler(sender, **kwargs):
#do some processing
post_save.connect(foo_handler, sender=Foo)
post_delete.connect(foo_handler, sender=Foo)
Run Code Online (Sandbox Code Playgroud) 最近我将我的应用程序更新到JSF 2.1.7和PrimeFaces 3.4.2.当使用以下对话框添加新组时,在保存新组之前,我会收到"名称大小必须介于1到40之间"的验证错误.当我点击选择器的添加按钮时会发生这种情况.我知道显示此消息是因为验证失败.当我添加immediate=true到p:commandButton 时,不会出现验证错误.我不知道是什么触发了验证.
<h:form id="formg" prependId="false">
<!-- messages -->
<p:growl id="msgsg" showDetail="true" />
<!-- data table -->
<ui:include src="/WEB-INF/flows/groupsTable.xhtml" />
<p:separator />
<!-- bottom tool bar -->
<ui:include src="/WEB-INF/flows/groupsToolBar.xhtml" />
<!-- preview, edit dialog -->
<ui:include src="/WEB-INF/flows/groupsDialog.xhtml" />
</h:form>
<p:dialog id="dialogg" header="#{groupsBean.dialogTitle}"
widgetVar="groupsDialog" dynamic="true" resizable="false" width="800"
height="600" showEffect="fade" hideEffect="fade" modal="true">
<p:ajax event="close" listener="#{groupsBean.refresh}"
immediate="true" update=":formg" global="false" process="@this" />
<p:tabView id="tabPicker">
<p:tab title="General">
<h:panelGrid id="displayg" columns="2">
<h:outputText value="#Group name*:" />
<p:inputText value="#{groupsBean.selectedGroup.name}" size="40"
readonly="#{!groupsBean.updatable}" maxlength="40" /> …Run Code Online (Sandbox Code Playgroud) 我发现了一个python程序:将Django数据库导出到xml文件,将django模型转换为xml表示.尝试运行程序时出现这些错误.我的模型包含一些用法语写的文字.
Traceback (most recent call last):
File "xml_export.py", line 71, in <module>
writer.content(value)
File "xml_export.py", line 41, in content
self.output += str(text)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 3:
ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud) 我有一个列表与字典作为元素.每个字典都有一个名为type的条目.type字段表示一个列表.获取具有最多元素的列表的最简单/ pythonic方法是什么?
programmes_by_type = []
programmes_by_type.append({'type' : [1, 2, 3]})
programmes_by_type.append({'type' : [2, 5]})
programmes_by_type.append({'type' : [3]})
programmes_by_type.append({'type' : [11, 2, 6, 7]})
Run Code Online (Sandbox Code Playgroud)
鉴于前面的示例,它应该返回[11, 2, 6, 7]列表.
我使用dataTable来显示一些记录.用户可以使用名为actionsDialog的对话框添加/更改记录.在保存记录之前,会显示一个名为reasonDialog的模态对话框,用户必须输入当前操作的某些原因.在我的逻辑中,我将数据保存到数据库后设置为null.
重复操作时出现问题.原因包含先前的值.我调试了代码并注意到这是因为原因被分配了inputTextarea的本地值.我怎样才能摆脱当地的价值?我使用的是PrimeFaces 3.0,Mojara 2.0.4,Tomcat 7.
我的理由对话框是:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<p:dialog header="#{label.reason}" widgetVar="reasonDialog"
showEffect="fade" hideEffect="explode" modal="true" dynamic="true">
<h:panelGrid columns="2">
<p:inputTextarea rows="5" cols="40" autoResize="false"
value="#{recordsBean.reason}" maxLength="1024" />
<f:facet name="footer">
<p:outputPanel layout="block">
<p:commandButton value="ok" update="genericRecords msgs"
action="#{recordsBean.execute}"
oncomplete="reasonDialog.hide();actionsDialog.hide()" />
</p:outputPanel>
</f:facet>
</h:panelGrid>
</p:dialog>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)
操作对话框如下所示:
<p:dialog id="actionsDialog" widgetVar="actionsDialog" dynamic="true"
resizable="false" height="600" showEffect="fade" hideEffect="fade" modal="true">
<ui:include src="/WEB-INF/flows/genericRecord.xhtml"/>
<f:facet name="footer">
<p:outputPanel layout="block">
<p:commandButton value="save" onclick="reasonDialog.show()" />
<p:commandButton value="cancel" immediate="true"
oncomplete="actionsDialog.hide()" />
</p:outputPanel>
</f:facet>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)