gpt4 book ai didi

java - JSF RichFaces 和双 slider

转载 作者:行者123 更新时间:2023-11-30 05:17:24 25 4
gpt4 key购买 nike

我在 richfaces 中看到有一个 slider ,想知道是否有人为它创建了像 Scriptaculous 中那样的双 slider 。

在应用程序中混合 JSF、Richfaces 和 Scriptaculous 是否有任何问题?

最佳答案

我无法准确回答你的问题,但这是我所知道的。

Is there any concerns in mixing JSF, Richfaces and Scriptaculous in an application?

是的。人们在使用 JSF 时遇到的问题大约有 50% 是因为他们试图将其视为另一个 taglib 库,而不是像 Swing 或 SWT 这样的 UI 框架。 JSF 设计者设想的世界更类似于可插入的 COM/ActiveX/VB 控件,而不是当前流行的 HTML 混搭。

也就是说,可以将 Scriptaculous 与 JSF 一起使用(见下文)。请注意,获取该值的 JSF 控件需要一些其他机制来将其 clientId 传递给 JavaScript(在本例中,是绑定(bind)到托管 bean 的常规 HTML 隐藏字段)。这有点乱。

清理它的一种方法是将所有内容移动到 JSF 渲染器中,并让控件发出所有适当的 HTML 和 JavaScript。我想这就是 RichFaces 背后的基本原理。不幸的是,我从未使用过它,所以只有通过实验才能知道它的 JavaScript 库和 Scriptaculous 是否会共存。判断 JavaScript 库作者是否考虑互操作性的一个很好的指标是检查该库是否已命名。

<小时/>

此代码使用 slider 来更新带有数值的文本字段:

查看:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<jsp:directive.page language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" />
<jsp:text>
<![CDATA[ <?xml version="1.0" encoding="ISO-8859-1" ?> ]]>
</jsp:text>
<jsp:text>
<![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ]]>
</jsp:text>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1" />
<title>Script Test</title>
<script src="javascripts/prototype.js" type="text/javascript">/**/</script>
<script src="javascripts/scriptaculous.js" type="text/javascript">/**/</script>
<style type="text/css">
div.slider {
width: 256px;
margin: 10px 0;
background-color: #ccc;
height: 10px;
position: relative;
}

div.slider div.handle {
width: 10px;
height: 15px;
background-color: #f00;
cursor: move;
position: absolute;
}

div#zoom_element {
width: 50px;
height: 50px;
background: #2d86bd;
position: relative;
}
</style>
</head>
<body>

<div class="demo">
<p>Use the slider to change the value</p>
<div id="zoom_slider" class="slider">
<div class="handle"></div>
</div>
</div>

<f:view>
<h:form>
<h:inputText binding="#{sliderIdBean.mycontrol}"
value="#{sliderIdBean.value}" onchange="updateSlider()">
<f:validateLongRange minimum="0" maximum="10" />
</h:inputText>
<h:commandButton value="Submit" action="#{sliderIdBean.action}" />
</h:form>
<h:messages />
</f:view>

<script type="text/javascript">
var zoom_slider = $('zoom_slider'),
mycontrol = $('${sliderIdBean.clientId}');

var ctrl = new Control.Slider(zoom_slider.down('.handle'), zoom_slider, {
range: $R(0, 10),
sliderValue: mycontrol.getValue(),
onSlide: function(value) {
value = Math.ceil(value);
mycontrol.setValue(value);
},
onChange: function(value) {
value = Math.ceil(value);
mycontrol.setStyle(value);
}
});

function updateSlider() {
ctrl.setValue(mycontrol.value);
}
</script>

</body>
</html>
</jsp:root>

session bean:

public class SliderIdBean {

private long value = 0;
private UIComponent mycontrol;

public long getValue() {
return value;
}

public void setValue(long value) {
this.value = value;
}

public UIComponent getMycontrol() {
return mycontrol;
}

public void setMycontrol(UIComponent mycontrol) {
this.mycontrol = mycontrol;
}

public String getClientId() {
FacesContext context = FacesContext
.getCurrentInstance();
return mycontrol.getClientId(context);
}

public String action() {
System.out.println("Submitted value was: " + value);
return null;
}

}

faces-config.xml:

<managed-bean>
<managed-bean-name>sliderIdBean</managed-bean-name>
<managed-bean-class>scripty.SliderIdBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

JavaScript 可能有点好斗。

关于java - JSF RichFaces 和双 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com