我有一种情况,其中有一个selectOneMenu,其值绑定到支持bean.
我需要一个不更新模型值的按钮(这就是为什么它有immediate ="true"属性).
该按钮的action方法更改selectOneMenu绑定的值,但是当重新显示页面时,将显示原始值(已提交的值)而不是action方法中设置的值.
任何想法为什么会发生这种情况?
如果我没有足够好地解释这个问题,请告诉我.
<h:selectOneMenu id="selectedPerson"
binding="#{bindings.selectPersonComponent}"
value="#{bean.selectedPerson}">
<s:selectItems var="op" value="#{bean.allPersons}"
label="#{op.osoba.ime} #{op.osoba.prezime}"
noSelectionLabel="#{messages.selectAPerson}">
</s:selectItems>
<f:converter converterId="unmanagedEntityConverter" />
</h:selectOneMenu>
...
<a4j:commandButton action="#{bean.createNew}" value="#{messages.createNew}"
immediate="true" reRender="panelImovine">
</a4j:commandButton>
Run Code Online (Sandbox Code Playgroud)
private Person selectedPerson;
public String createNew() {
log.debug("New created...");
selectedPerson = null;
bindings.getSelectPersonComponent().setSubmittedValue(null); //SOLUTION
return "";
}
Run Code Online (Sandbox Code Playgroud)
解决方案是在内衬标记解决方案 :)
我刚刚开始使用lift,我现在正在尝试将普通表单更改为ajax表单,但该方法processEntryAdd
永远不会被调用.
def addUser(xhtml : Group) : NodeSeq = {
var firstName = ""
var lastName = ""
def processEntryAdd() {
Log.info("processEntryAdd: " + firstName + ", " + lastName)
}
SHtml.ajaxForm(
bind("entry", xhtml,
"firstName" -> SHtml.text(firstName,
(x) => {
Log.info("Setting firstName to " + x);
firstName = x
}),
"lastName" -> SHtml.text(lastName,
(x) => {
Log.info("Setting lastName to " + x);
lastName = x
}),
"submit" -> SHtml.submit("Add user", processEntryAdd),
))
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何实现我想要做的,或为什么上面的代码不起作用.按下按钮时会提交两个表单字段的值,firstName
并且lastName
设置了两个局部变量,但未调用与SHtml.submit关联的函数.
谢谢!
我试图在我的旧OpenGL程序中添加一些着色器,这些程序可以绘制很多GL_POINTS和一些GL_LINES.
我创建了这两个着色器:
顶点着色器:
void main()
{
vec4 v = vec4(gl_Vertex);
v.z = v.z + sin(v.x*v.x + v.y*v.y)/10.0;
gl_Position = gl_ModelViewProjectionMatrix * v;
}
Run Code Online (Sandbox Code Playgroud)
片段着色器:
#version 120
void main()
{
vec4 myOutputColor = gl_Color;
gl_FragColor = myOutputColor;
//gl_FragColor.r = 0.5;
}
Run Code Online (Sandbox Code Playgroud)
这两个着色器编译和链接没有问题.并且顶点着色器工作得很好,我可以看到GL_POINTS在顶点着色器中使用该sin移位.但问题是,如果背景颜色不是黑色,我只能看到我的GL_POINTS和GL_LINES,因为所有的点和线都呈现为黑色.似乎忽略了渲染代码中使用glColor3f设置的所有颜色.如果我取消注释片段着色器中的注释行,我可以将所有的行和点都设置为红色,但是gl_Color不应该对应于每个点使用glColor3f设置的颜色吗?
我的OpenGL代码中是否还有其他可能导致此行为的内容?